好的,所以我试图在用户翻动作弊模式开关时进行,它将禁用answerButton。我确实尝试将按钮设置为在底部附近禁用,但它似乎没有做任何事情。我添加了打印("")以查看它是否会在控制台中打印,但是没有打印任何内容。我不确定这里有什么问题。
我已粘贴下面的代码。
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;
}
}
}
答案 0 :(得分:1)
您要在UISwitch
中保存UserDefaults
的值状态,以便在ViewController's
方法viewDidApper
中使用其值。
override func viewDidAppear(_ animated: Bool) {
self.btnAnswer.isEnabled = !UserDefaults.standard.bool(forKey: "switchState")
}
注意:您无法在prepareForSegue
中添加SettingsController
,因为当您按下NavigationController
的后退按钮时它永远不会被调用,所以请考虑删除它