微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 iOS 上启用状态恢复

如何解决在 iOS 上启用状态恢复

我正在尝试为我的应用启用状态恢复,但我无法解决。我已经为故事板中的所有视图控制器设置了唯一的恢复标识符。我在应用程序委托上覆盖了这些方法

func application(_ application: UIApplication,shouldSaveSecureApplicationState coder: NSCoder) -> Bool {
    return true;
}

func application(_ application: UIApplication,shouldRestoreSecureApplicationState coder: NSCoder) -> Bool {
    return true;
}

我不知道我还能做什么。我尝试将断点放在 encodeRestorableStatedecodeRestorableState 内,但在连接调试器时似乎没有调用它们。我正在使用故事板,所以我的理解是其他一切都应该自动发生。

为了测试状态恢复,我在模拟器中运行应用程序,更改状态(在选项卡栏中选择一个选项卡),在模拟器中按下主页按钮,从 Xcode 退出应用程序,最后再次从通过单击主屏幕上的图标来运行模拟器。有一小会儿,我可以看到我之前选择的选项卡,但随后它切换到第一个选项卡。

据我所知,这应该是我需要做的全部。我已经尝试了一些触发状态恢复的过程,比如在 iOS 任务切换器中关闭应用程序,但它们都有相同的结果。我在某些地方读到我需要创建视图控制器实例,但如果我使用的是故事板,则不需要这样做。

我认为标签栏中当前选定的项目可能不会自动保存和恢复,所以我尝试将其放入标签栏视图控制器中:

override func encodeRestorableState(with coder: NSCoder) {
    coder.encode(selectedindex,forKey: "selectedindex");
    super.encodeRestorableState(with: coder);
}

override func decodeRestorableState(with coder: NSCoder) {
    super.decodeRestorableState(with: coder);
    selectedindex = coder.decodeInteger(forKey: "selectedindex");
}

那没有效果。我不知道我做错了什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。