繁体   English   中英

iOS中的状态恢复

[英]state restoration in iOS

我正在存储我的应用程序屏幕,以便在应用程序打开时它将显示已存储的屏幕。 该应用程序是基于导航的。

我已将Restoration Ids分配给主故事板中的两个视图控制器。 第一个控制器是导航控制器的根视图控制器。 我还为导航控制器分配了Restoration Id。 现在问题是当我运行应用程序时,我收到以下警告:

无法创建正在进行的恢复标记文件。

不确定还需要做什么。

之前我有同样的警告并通过以下方式修复它。

我在使用故事板。 我的故事板只包括导航视图控制器和视图控制器(该导航视图控制器的根视图控制器)。 在我的情况下,它是由两个原因之一引起的:

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

  1. 在app delegate中,覆盖应用程序:willFinishLaunching。 可以在该方法中简单地返回YES。

  2. 对于每个视图控制器和视图(包括导航视图控制器和选项卡视图控制器),请设置还原ID

  3. 在app delegate中,通过覆盖shouldSaveApplicationStateshouldRestoreApplicationState选择加入

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

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

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

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

尝试为您的View提供恢复ID。 您可以这样做以打开xib或故事板并将ID分配给View Controller。

在此输入图像描述

更多详情: http//useyourloaf.com/blog/2013/05/21/state-preservation-and-restoration.html

模拟器:

  • 这在应用程序编码时首次出现在模拟器上。 (不知道为什么)
  • 随后的时间不会显示此警告。

设备:

尝试在设备上运行。

  1. 在设备上运行
  2. 转到主屏幕。
  3. 停止在Xcode上运行
  4. 从应用切换器中删除应用
  5. 再次在设备上运行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM