访问变量 IBAction

Access variable IBAction

我需要帮助我的函数无法访问我的布尔值。我的开关 IBAction 应该更改它,但似乎没有更新我的第二个文件中的那个变量。

@IBAction func saveClubSwitchPressed(_ sender: UISwitch) {
    UserDefaults.standard.set(sender.isOn, forKey: "ClubState")
   if(sender.isOn == true)
    {
        clubSwitchBool = true
         print(stateClubSwitchBool())
    }else
    {
      clubSwitchBool = false
        print(stateClubSwitchBool())
    }
}
   func stateClubSwitchBool() -> Bool
{
    return clubSwitchBool
}

这是我在另一个文件中访问我的布尔值的函数:

override func loadView() {
    super.loadView()

    var clubSwitchBool1 = getSwitchBool()
}

你在哪里 declare/initialize clubSwitchBool 变量?

您可以简化您的函数,但让 clubSwitchBool 读取 isOn 属性。

@IBAction func saveClubSwitchPressed(_ sender: UISwitch) {
    UserDefaults.standard.set(sender.isOn, forKey: "ClubState")
    clubSwitchBool = sender.isOn
    print(stateClubSwitchBool())
}

编辑:

让您的 clubSwitchBool1 从 UserDefaults 中读取:

clubSwitchBool1 = UserDefaults.standard.bool(forKey: "ClubState")

代码:

class ReglagesVC: UIViewController
{
    var clubSwitchBool = false

    @IBAction func saveClubSwitchPressed(_ sender: UISwitch)
    {
        UserDefaults.standard.set(sender.isOn, forKey: "ClubState")
        clubSwitchBool = sender.isOn
        print(stateClubSwitchBool())
    }

    func stateClubSwitchBool() -> Bool
    {
        return clubSwitchBool
    }
}

和你的一样。它工作得很好。

现在您正在使用的函数:

func getSwitchBool() -> Bool
{
    return ReglagesVC().clubSwitchBool
}

在上面的方法调用中,您使用的 ReglagesVC() 总是创建 ReglagesVC 的新实例。现在每次访问新创建的实例的 clubSwitchBool 时,它都会 return false.

这就是您每次获得 false 的原因。