Watch App的生命周期是什么?

Zig*_*ong 6 apple-watch watchkit watchos-2

WKInterfaceController我的Apple Watch应用程序中有两个子类.第一个是另一个的入口,它们nextPage与Interface Builder 的关系.对于awakeWithContext,willActivate并且didDeactivate在每个InterfaceController方法,我打印大家都出去了,而手表应用的启动.

我得到了这个输出:

awakeWithcontext -> First
awakeWithContext ?> Second
willActivate ?> First
willActivate -> Second
didDeactivate ?> Second
Run Code Online (Sandbox Code Playgroud)

然后我滑到下一个InterfaceController:

willActivate -> Second
didDeactivate ?> First
Run Code Online (Sandbox Code Playgroud)

所以现在的问题是:

awakeWithContext只要启动,Watch App中所有InterfaceControllers的所有方法都会被触发吗?

willActivate方法怎么样?

Sey*_*aei 7

watchOS应用程序的生命周期如下所述.

awakeWithContext

初始化页面时,awakeWithContext将调用.这是第一个被调用的方法,还没有显示UI.

你应该做一些事情,比如为表视图更新模型数组,设置属性等awakeWithContext.这个方法与简单类(init())中的初始化器非常相似,但这次是在WKInterfaceControllers中.

你的第一个问题的答案:

awakeWithContext 一旦watchOS应用程序启动,将在所有页面上调用.

willActivate

当即将显示界面控制器时,willActivate将被调用.

您应该更新标签值,操作以及与视图元素相关的任何其他内容.

你的第二个问题的答案:

willActivate一旦watchOS应用程序启动,将在所有页面上调用,但相比之下awakeWithContext,只要您查看控制器(换句话说,当您导航到所需的界面时),就会再次调用它.

第一次启动应用程序时,didDeactivate将调用除当前控制器之外的所有控制器,当转到另一个控制器时,willActivatedidDeactivate在第一次调用之前调用它.

所以生命周期是:

1- awakeWithContext所有观点

2 - willActivate的所有视图

3- didDeactivate的除了第一个所有视图,(当前的)

当刷到第二个时:

1- willActivate第二视图

didDeactivate第一个视图的2-


Ant*_*oni 0

awakeWithContext在初始化时调用。启动时,将在手表应用程序中的所有页面上调用此方法。

willActivate当界面控制器即将显示时调用。willActivate调用第二个界面控制器的原因didDeactivate是因为它是可以在屏幕上显示的下一页。发生这种情况是为了帮助加载下一个界面控制器的相关数据,因为它可能很快就会出现在屏幕上。

因此,如果您有第 3 页界面控制器,则当第 2 个界面控制器出现在屏幕上时,将调用其willActivate后面的。didDeactivate

苹果文档willActivate手表上基于页面的导航可能没有明确说明这一点,但它们总是有助于阅读。