我使用导航控制器,我有6个导航控制器我希望应用程序保存状态并恢复应用程序终止的最后一个屏幕。再次启动时打开它 在任何视图中我必须使用的代码是什么。
答案 0 :(得分:4)
Apple提供了执行此操作的机制:https://developer.apple.com/documentation/uikit/view_controllers/preserving_your_app_s_ui_across_launches?language=objc
链接中的重要部分:
国家保护和恢复不是一个自动特征 应用必须选择使用它。应用表明他们支持 通过在他们的app delegate中实现以下方法来实现:
application:shouldSaveApplicationState: application:shouldRestoreApplicationState:
通常,您对这些方法的实现只返回YES 表明可以进行国家保护和恢复。然而, 想要有条件地保存和恢复状态的应用程序可以 在不应发生操作的情况下返回NO。对于 例如,在您的应用程序发布更新后,您可能希望这样做 从您的应用程序返回NO:shouldRestoreApplicationState:method 如果您的应用无法有效恢复以前的状态 版本
保留视图控制器的状态
保留应用程序视图控制器的状态应该是您的 主要目标。视图控制器定义用户的结构 接口。他们管理呈现该界面所需的视图 他们协调获取和设置支持这些数据的数据 观点。要保留单个视图控制器的状态,您必须这样做 以下内容:
(必需)为视图控制器分配恢复标识符;看到 “标记视图控制器以进行保存。”(必需)提供 用于在启动时创建或定位新视图控制器对象的代码; 请参阅“在启动时恢复视图控制器。”(可选) 实现encodeRestorableStateWithCoder:和 decodeRestorableStateWithCoder:编码和恢复任何方法 在后续发布期间无法重新创建的状态信息; 请参阅“编码和解码视图控制器的状态。”
除了应用程序视图控制器保存的数据外 视图,UIKit为您提供了保存任何杂项数据的钩子 您的应用需要。具体来说,就是UIApplicationDelegate协议 包括以下方法供您覆盖:
application:willEncodeRestorableStateWithCoder: application:didDecodeRestorableStateWithCoder: