我的 UIswitch 值为零,即使它打开我必须关闭然后重新打开才能设置值
Posted
技术标签:
【中文标题】我的 UIswitch 值为零,即使它打开我必须关闭然后重新打开才能设置值【英文标题】:my UIswitch value is nil even when its on I have to turn swich off and then back on for it to set value 【发布时间】:2019-04-10 08:14:44 【问题描述】:使用 UIswitch 设置值 我的变量是静态的,因为我在不同的 swift 文件中使用它们 所以当我运行程序并单击注册按钮时,它会打印 nil 即使它打开(关闭应用程序时按钮保持原样) 我必须切换它,然后单击注册按钮以打印可选(真) 我该怎么做才能让用户不必在每次打开应用程序时或当应用程序打开时显示但值为零时切换 我也只是想让它打印真/假(我如何打开)
class FirstViewController: UIViewController, UITextFieldDelegate
static var FirstColor: Bool!
@IBAction func home(_ sender: RoundButton)
@IBAction func Registration(_ sender: RoundButton)
print(FirstViewController.FirstColor)
@IBAction func ColorSwitch(_ sender: UISwitch)
if sender.isOn
FirstViewController.FirstColor = true
elseFirstViewController.FirstColor = false
【问题讨论】:
请考虑在您编写的文本中使用句点 【参考方案1】:如果您想保持开关状态,您需要将其存储在 UserDefaults 中。不要在 FirstViewController 中添加静态属性。使用计算属性创建一个像这样的单独类
class Color
static var firstColor: Bool
get return UserDefaults.standard.bool(forKey: "firstColor")
set UserDefaults.standard.set(newValue, forKey: "firstColor")
在FirstViewController的viewDidLoad中获取最后状态并更新
override func viewDidLoad()
super.viewDidLoad()
mySwitch.isOn = Color.firstColor
在 Switch 的操作中改变它
@IBAction func ColorSwitch(_ sender: UISwitch)
sender.isOn = !sender.isOn
Color.firstColor = sender.isOn
【讨论】:
不,苹果默认值是多少?每当我运行应用程序时,即使我在停止应用程序时将它们关闭,也会加载开关 您必须在关闭应用程序时保持状态。看看 UserDefaults 类(特别是 set 和 bool func)。 @kishan 你没有在关闭应用时将开关的状态存储在任何地方 @kishan 在 FirstViewController 的 viewDidLoad 中你需要获取持久化的值并根据它改变 Switch。 是的,我认为这应该可以,我知道关闭应用程序时设置状态的方法 thx【参考方案2】:您可以尝试直接使用 isOn 属性的值。这有帮助吗?另外我建议您为处理程序使用更好的名称。
class FirstViewController: UIViewController, UITextFieldDelegate
static var FirstColor: Bool!
@IBAction func registrationTapped(_ sender: RoundButton)
print(FirstViewController.FirstColor)
@IBAction func colorChanged(_ sender: UISwitch)
FirstViewController.FirstColor = sender.isOn
【讨论】:
相同的按钮加载时我不会在注册按钮值打印为零时立即触摸按钮,所以由于按钮加载为 on 你知道如何在每次打开应用程序时加载为 off 并且我将设置为静态var FirstColor:布尔!为假以上是关于我的 UIswitch 值为零,即使它打开我必须关闭然后重新打开才能设置值的主要内容,如果未能解决你的问题,请参考以下文章