在swift 4中切换viewControllers之后如何使Switch保持状态?

时间:2018-04-24 01:35:32

标签: swift viewcontroller uiswitch

所以我有这个迷你学校项目,在开始我有一个关闭开关,想法是打开它,并能够移动到其他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")}

此代码仅用于确保开关始终处于开启状态,即使是第一次进入应用程序时也是如此。

1 个答案:

答案 0 :(得分:1)

你的逻辑是正确的。但是,在加载视图控制器时,viewDidLoad只会被调用一次。如果您进入后台并再次打开,则不会再次调用viewDidLoad

您可以使用UIApplicationDelegate中的某些功能,例如applicationWillEnterForegroundapplicationWillTerminateapplicationDidBecomeActiveapplicationWillResignActiveapplicationDidEnterBackground ...选择一个适合你的场景。

或者你可以在viewcontroller中添加监听UIApplicationWillEnterForeground的观察者,并在调用它时更新你的开关。