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