我需要帮助我的函数不能访问我的布尔值。我的开关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
}
答案 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
的原因。