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