访问变量IBAction

时间:2017-08-23 09:19:34

标签: swift ibaction

我需要帮助我的函数不能访问我的布尔值。我的开关IBAction假设要更改它,但似乎不在我的第二个文件中更新该变量。

var z = x < y ? x : y

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

@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
}

2 个答案:

答案 0 :(得分:0)

你在哪里声明/初始化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")

答案 1 :(得分:0)

代码:

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时,它都将返回false

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