ios - iOS 中的状态恢复

标签 ios state-restoration

我正在存储我的应用程序屏幕,这样当应用程序打开时它会显示存储的屏幕。该应用程序是基于导航的。

我已将恢复 ID 分配给主 Storyboard中的两个 View Controller 。第一个 Controller 是导航 Controller 的 Root View Controller 。我还为导航 Controller 分配了 Restoration Id。 现在的问题是,当我运行应用程序时,我收到以下警告:

Unable to create restoration in progress marker file.

不确定还需要做什么。

最佳答案

我之前有过同样的警告,并通过执行以下操作修复了它。

我正在使用 Storyboard。我的 Storyboard只包含一个导航 View Controller 和一个 View Controller (它是该导航 View Controller 的 Root View Controller )。就我而言,它是由以下两个原因之一引起的:

应用程序未正确设置状态保存 需要设置以下内容:

  1. 在应用委托(delegate)中,覆盖 application:willFinishLaunching。可以在该方法中简单地返回 YES。

  2. 为每个 View Controller 和 View (包括导航 View Controller 和选项卡 View Controller )设置一个恢复 ID

  3. 在应用委托(delegate)中,通过覆盖 shouldSaveApplicationStateshouldRestoreApplicationState

    选择加入

如果此警告仍然出现,您可以检查您如何在 Xcode 中运行您的应用程序。我在 Xcode 模拟器中运行我的应用程序,并且必须遵循特定的顺序来触发状态保存。

  • 在 Xcode 模拟器中启动应用程序
  • 在 Xcode 模拟器中,单击“Home”按钮将应用置于后台。应调用 View Controller 的 encodeRestorableStateWithCoder 方法
  • 回到Xcode,点击“停止”按钮终止模拟
  • 在 Xcode 模拟器中,双击“主页”按钮,然后从应用程序切换器中删除该应用程序,然后
  • 返回 Xcode,再次运行应用程序。

不应出现该警告。当我使用其他序列时,我看到出现该警告。当我使用 Xcode 在我的设备上调试我的应用程序时,我遵循了相同的顺序并且没有看到警告。

我认为该警告表明由于 Xcode 无法正确终止应用程序,状态恢复文件未正确保存到磁盘上。

关于ios - iOS 中的状态恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19424670/

相关文章:

swift - NSViewController 用户界面状态恢复

cocoa - 如何在 Swift 中实现 NSWindowRestoration?

ios - 模态视图 Controller 动画状态恢复

ios - 使用核心数据时获取错误

ios - NSDictionary递归循环

ios - Mac Catalyst - 拖动到非事件窗口

iphone - Xcode ProcessPCH iPhone模拟器编译报错

objective-c - iPad 应用程序因 NSInvalidArgumentException 而崩溃

iphone - 带有自定义容器 View Controller (MMDrawerController) 的 iOS 状态恢复