【问题标题】:state restoration in iOSiOS中的状态恢复
【发布时间】:2013-10-25 19:43:45
【问题描述】:

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

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

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

不知道还需要做什么。

【问题讨论】:

标签: ios state-restoration


【解决方案1】:

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

我正在使用情节提要。我的故事板只包含一个导航视图控制器和一个视图控制器(它是该导航视图控制器的根视图控制器)。就我而言,这是由以下两个原因之一引起的:

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

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

  2. 为每个视图控制器和视图(包括导航视图控制器和选项卡视图控制器)设置一个恢复 ID

  3. 在应用委托中,通过覆盖 shouldSaveApplicationStateshouldRestoreApplicationState 选择加入

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

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

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

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

【讨论】:

  • 我很确定您不需要执行上述步骤 D(在模拟器中强制退出应用程序)。
【解决方案2】:

尝试为您的视图提供恢复 ID。您可以这样做来打开您的 xib 或故事板并将 id 分配给您的视图控制器。

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

【讨论】:

    【解决方案3】:

    模拟器:

    • 当应用程序编码时,这是第一次在模拟器上发生。 (不知道为什么)
    • 此警告随后将不再显示。

    设备:

    尝试在设备上运行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-09
      • 2018-02-20
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多