从另一个带有 swift 开关的视图控制器禁用按钮



好的,所以我正在尝试在用户翻转作弊模式开关时禁用 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的后退按钮时,它永远不会调用,因此请考虑将其删除。

最新更新