我有一个使用分层导航的简单“计时器”watchOS 应用程序。我可以按下数字表冠返回手表跳板,然后点击应用程序图标并返回到我正在使用的同一个界面控制器。
如果我返回表盘并点击我的应用程序的复杂功能,应用程序将启动,但似乎已重新启动:我失去了当前状态。有什么办法可以防止这种情况发生吗?
我有一个使用分层导航的简单“计时器”watchOS 应用程序。我可以按下数字表冠返回手表跳板,然后点击应用程序图标并返回到我正在使用的同一个界面控制器。
如果我返回表盘并点击我的应用程序的复杂功能,应用程序将启动,但似乎已重新启动:我失去了当前状态。有什么办法可以防止这种情况发生吗?
听起来您在问如何阻止您的应用程序内存不足?
如果是这样,就像在 iOS 上一样,这是不可能的 - 显然手表的内存比手机少,因此更有可能被换掉。
您需要做的是将您的状态存储在一些持久层中 - 例如 NSUserDefaults - 所以当应用程序重新启动时,它可以重新加载其状态
如果您通过点击复杂功能打开手表应用程序,该应用程序将自动返回根界面控制器。这是系统强制行为。
如果要保留以前的状态,则需要将应用的层次结构更改为基于页面的界面。
基于页面的界面中的用户交互可以像基于导航的界面一样。您可以将pushController(withName:context:)
,pop()
和 popToRootController()
方法替换为becomeCurrentPage()
. 我还发现从一个页面界面切换到另一个页面也比导航(推/弹出)到另一个更快。