我的应用程序中有四个视图控制器。现在让我们假设用户当前在第二个 viewController 上并且他终止了应用程序。
现在如何保存此状态,以便当用户重新打开应用程序时,他应该看到第二个 viewContoller,并且应该能够导航回第一个 viewContoller。
我想到的解决方案是简单地将当前屏幕的变量保存在 userDefaults 中,然后将该 viewController 设为 rootViewController。但我知道这不是正确的解决方案,我也会失去导航。请指导我谢谢。
我的应用程序中有四个视图控制器。现在让我们假设用户当前在第二个 viewController 上并且他终止了应用程序。
现在如何保存此状态,以便当用户重新打开应用程序时,他应该看到第二个 viewContoller,并且应该能够导航回第一个 viewContoller。
我想到的解决方案是简单地将当前屏幕的变量保存在 userDefaults 中,然后将该 viewController 设为 rootViewController。但我知道这不是正确的解决方案,我也会失去导航。请指导我谢谢。
如果您还没有,请创建一个名为 BaseViewController 的类,该类应该从您的所有 UIViewController 中扩展:
class BaseViewController: UIViewController {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// always remember last controller shown
NSUserDefaults.standardUserDefaults.setObject(classForCoder(), forKey: "lastController")
}
}
您可以保存控制器类名称、int 标识符或您想要的东西。然后,在应用程序启动时的应用程序委托中,您可以读取此值并使您的自定义逻辑打开正确的控制器。
if NSUserDefaults.standardUserDefaults().stringForKey("lastController") == MyCustomViewController.classForCoder() {
// open MyCustomViewController
}
然后当用户返回时,根据您的应用程序流程重定向到正确的 UIViewController。