1

我使用导航控制器,我有 6 个导航控制器我希望应用程序保存状态并恢复应用程序终止的最后一个屏幕。在它再次启动时打开它
在任何视图中我必须使用什么代码来执行此操作。

4

1 回答 1

5

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: 方法来编码和恢复在后续启动期间无法重新创建的任何状态信息;请参阅“对视图控制器的状态进行编码和解码”。</p>

除了应用程序的视图控制器和视图保存的数据之外,UIKit 还提供了挂钩来保存应用程序所需的任何杂项数据。具体来说, UIApplicationDelegate 协议包括以下方法供您覆盖:

application:willEncodeRestorableStateWithCoder:
application:didDecodeRestorableStateWithCoder:
于 2013-03-22T16:42:59.440 回答