This is so far beyond me... I've spent all day on this, and what it comes down to is that I just have no idea what I'm doing. I connected all my buttons as outlets, which is what I thought OOPer meant when they said to connect PRToggleButton as an outlet. I'm not sure because all of my buttons are connected to that single IBAction. I added the two UserDefaults under the saveButtonStates because I'd originally wanted to use that button to save the states and label output, but now I'm wondering if it would be easier to just remove that button and use UserDefaults in the ButtonPressed function? Also, I'm sure I'm not setting up the dictionary correctly because I couldn't figure out what type of value to use for 'state' in your suggestions [title: state]. Lastly, to get the saved data back, I created the override func viewDidAppear, but I'm getting erros and "fix" suggestions there.
So what I need to know is:
1) am I putting everything in the right place?
2) what value do I use for the 'state' in the dictionary, and is it in the right place?
3) do I need to have all my buttons connected as outlets?
import UIKit
class MedTrackViewController: UIViewController {
@IBOutlet weak var progressLabel: UILabel!
@IBOutlet weak var bio1Button: PRToggleButton!
@IBOutlet weak var bio2Button: PRToggleButton!
@IBOutlet weak var biochem1Button: PRToggleButton!
@IBOutlet weak var chem1Button: PRToggleButton!
@IBOutlet weak var chem2Button: PRToggleButton!
@IBOutlet weak var ochem1Button: PRToggleButton!
@IBOutlet weak var ochem2Button: PRToggleButton!
@IBOutlet weak var phy1Button: PRToggleButton!
@IBOutlet weak var phy2Button: PRToggleButton!
@IBOutlet weak var precalcButton: PRToggleButton!
@IBOutlet weak var calcButton: PRToggleButton!
@IBOutlet weak var statsButton: PRToggleButton!
@IBOutlet weak var psych1Button: PRToggleButton!
@IBOutlet weak var soc1Button: PRToggleButton!
let dictionary = ["bio1Button": String, "bio2Button": String, "biochem1Button": String, "chem1Button": String, "chem2Button": String, "ochem1Button": String, "ochem2Button": String, "phy1Button": String, "phy2Button": String, "precalcButton": String, "calcButton": String, "statsButton": String, "psych1Button": String, "soc1Button": String]
var countClickedButtons: Int = 0 {
didSet {
let percent = Int(100.0 * Double(countClickedButtons) / 14.0)
progressLabel.text = String(percent) + " % Complete!"
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
if let value = UserDefaults.standard.string(forKey: "saved") {
let selectedState = Bool(value)
}
}
/
@IBAction func ButtonPressed (_ sender: PRToggleButton) {
if !sender.isSelected {
countClickedButtons += 1
}else{
countClickedButtons -= 1
}
sender.isSelected = !sender.isSelected
}
@IBAction func saveButtonStates(_ sender: Any) {
UserDefaults.standard.set(String(sender.isSelected), forKey: "saved")
UserDefaults.standard.set([bio1Button : String(sender.isSelected)], forKey: "saved")
}
@IBAction func closeView(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}