在 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 (将#修改为@)