好的,所以我正在尝试在用户翻转作弊模式开关时禁用 answerButton。我确实尝试将按钮设置为在底部附近禁用,但它似乎没有任何作用。我添加了 print("( 以查看它是否会在控制台中打印,但未打印任何内容。我不确定这里出了什么问题。
我已经在下面粘贴了我的代码。
import Foundation
import UIKit
class SettingsController: UITableViewController {
@IBOutlet weak var cheatSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
cheatSwitch.isOn = UserDefaults.standard.bool(forKey: "switchState")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func saveSettings(_ sender: UISwitch) {
UserDefaults.standard.set(cheatSwitch.isOn, forKey: "switchState")
UserDefaults.standard.synchronize()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let mainView : ViewController = segue.destination as! ViewController
if cheatSwitch.isOn == true {
print("turn off button")
mainView.btnAnswer.isEnabled = false;
}
else {
print("turn on button")
mainView.btnAnswer.isEnabled = true;
}
}
}
您将值
UISwitch
的状态保存在UserDefaults
中,以便您可以在方法viewDidApper
ViewController's
中使用它的值。
override func viewDidAppear(_ animated: Bool) {
self.btnAnswer.isEnabled = !UserDefaults.standard.bool(forKey: "switchState")
}
注意:无需在SettingsController
中添加prepareForSegue
,因为当您按下NavigationController
的后退按钮时,它永远不会调用,因此请考虑将其删除。