使用Swift在ios中保存应用程序的状态

时间:2016-07-26 05:59:38

标签: ios swift state-saving

我的应用程序中有四个viewControllers。现在假设用户当前在第二个viewController上,他终止了应用程序。

现在我如何保存这个状态,这样当用户重新打开应用程序时,他应该会看到第二个viewContoller,并且应该能够导航回第一个viewContoller。

我想到的解决方案是简单地在userDefaults中保存当前屏幕的变量,然后使viewController成为rootViewController。但我知道它不是正确的解决方案,我也会失去导航。 请指导我,谢谢。

1 个答案:

答案 0 :(得分:0)

如果还没有,请创建一个名为BaseViewController的类,该类应该从所有UIViewControllers扩展:

class BaseViewController: UIViewController {

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        // always remember last controller shown
        NSUserDefaults.standardUserDefaults.setObject(classForCoder(), forKey: "lastController")
    }
}

您可以保存控制器类名称,int标识符或所需的somenthing。 然后,在应用程序启动的app委托中,您可以读取此值并使您的自定义逻辑打开正确的控制器。

if NSUserDefaults.standardUserDefaults().stringForKey("lastController") == MyCustomViewController.classForCoder() {
    // open MyCustomViewController
}

然后当用户返回时,根据您的应用程序流重定向到正确的UIViewController。