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方法怎么样?
watchOS应用程序的生命周期如下所述.
awakeWithContext
初始化页面时,awakeWithContext将调用.这是第一个被调用的方法,还没有显示UI.
你应该做一些事情,比如为表视图更新模型数组,设置属性等awakeWithContext.这个方法与简单类(init())中的初始化器非常相似,但这次是在WKInterfaceControllers中.
你的第一个问题的答案:
awakeWithContext一旦watchOS应用程序启动,将在所有页面上调用.
willActivate
当即将显示界面控制器时,willActivate将被调用.
您应该更新标签值,操作以及与视图元素相关的任何其他内容.
你的第二个问题的答案:
willActivate一旦watchOS应用程序启动,将在所有页面上调用,但相比之下awakeWithContext,只要您查看控制器(换句话说,当您导航到所需的界面时),就会再次调用它.
第一次启动应用程序时,didDeactivate将调用除当前控制器之外的所有控制器,当转到另一个控制器时,willActivate将didDeactivate在第一次调用之前调用它.
所以生命周期是:
1- awakeWithContext所有观点
2 - willActivate的所有视图
3- didDeactivate的除了第一个所有视图,(当前的)
当刷到第二个时:
1- willActivate第二视图
didDeactivate第一个视图的2-
awakeWithContext在初始化时调用。启动时,将在手表应用程序中的所有页面上调用此方法。
willActivate当界面控制器即将显示时调用。willActivate调用第二个界面控制器的原因didDeactivate是因为它是可以在屏幕上显示的下一页。发生这种情况是为了帮助加载下一个界面控制器的相关数据,因为它可能很快就会出现在屏幕上。
因此,如果您有第 3 页界面控制器,则当第 2 个界面控制器出现在屏幕上时,将调用其willActivate后面的。didDeactivate
苹果文档上willActivate。手表上基于页面的导航可能没有明确说明这一点,但它们总是有助于阅读。
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |