所以我有这个迷你学校项目,在开始我有一个关闭开关,想法是打开它,并能够移动到其他viewControllers但是当我回来时,开关仍然打开,事情就是这样关闭后打开应用程序时,必须关闭它。我见过其他类似的问题,但没有人询问如何在关闭应用程序后保持关闭状态。
override func viewDidLoad() {
super.viewDidLoad()
switchOutlet.isOn = UserDefaults.standard.bool(forKey: "isOnSwitch")
{
@IBAction func switchAction(_ sender: Any) {
let isOnSwitch = UserDefaults.standard.bool(forKey: "isOnSwitch")
if isOnSwitch == true {
UserDefaults.standard.set(false, forKey: "isOnSwitch")
} else { UserDefaults.standard.set(true, forKey: "isOnSwitch")}
此代码仅用于确保开关始终处于开启状态,即使是第一次进入应用程序时也是如此。
答案 0 :(得分:1)
你的逻辑是正确的。但是,在加载视图控制器时,viewDidLoad
只会被调用一次。如果您进入后台并再次打开,则不会再次调用viewDidLoad
。
您可以使用UIApplicationDelegate
中的某些功能,例如applicationWillEnterForeground
,applicationWillTerminate
,applicationDidBecomeActive
,applicationWillResignActive
,applicationDidEnterBackground
...选择一个适合你的场景。
或者你可以在viewcontroller中添加监听UIApplicationWillEnterForeground的观察者,并在调用它时更新你的开关。