watchOS 2:初始接口控制器
设置属性与watchOS 2开始,我们有一个ExtensionDelegate
对象,这是类似于UIApplicationDelegate
(反应与APP的生命周期事件)。watchOS 2:初始接口控制器
我想到第一接口控制器对象,这将在发射显示的引用,以设置在其上的特性(例如通过在数据存储对象)。
按照docs,上WKExtension
手回初始控制器rootInterfaceController
属性:
根接口控制器位于应用程序的主要故事板 并具有与之相关联的主入口点对象。 WatchKit 显示在启动时的根接口控制器,虽然 应用程序可以启动 序列完成之前呈现不同的接口控制器。
所以我尝试在ExtensionDelegate
如下:
func applicationDidFinishLaunching() {
guard let initialController = WKExtension.sharedExtension().rootInterfaceController else {
return
}
initialController.dataStore = DataStore()
}
即使正确接口控制器显示,rootInterfaceController
在这一点零。有趣的是,如果我查询我的接口控制器的willActivate()
中的相同属性,则属性设置正确。
在iOS应用程序,你已经可以得到根视图控制器applicationDidFinishLaunching()
,我想它应该工作一样的watchOS。
有没有办法之前它显示出来(从外)设置在我的接口控制器属性?这是一个错误?
非常感谢您的答复!
你可能你的代码移到applicationDidBecomeActive。
此页面描述了手表应用程序的状态。当调用applicationDidFinishLaunching时,应用程序处于非活动状态。
不幸的是,我已经试过了,但是在所有的扩展代理回调中'WKExtension.sharedExtension()。rootInterfaceController'都是'nil'。 –
你有没有找到这个原因? @józsef-vesza – Wilmar
@Wilmar遗憾没有。看起来'rootInterfaceController'在这个阶段是零,所以我最终在我的接口控制器子类中实例化了我的属性。不是很好,但这是迄今为止我所得到的最好的。 :/ –
嗯,我明白了。我在代码中添加了'dispatch_after',将其设置为1秒,然后'rootInterfaceController'属性具有期望的值。非常令人沮丧。 @józsef-vesza – Wilmar