2015-09-28 76 views
5

设置属性与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。

有没有办法之前它显示出来(从外)设置在我的接口控制器属性?这是一个错误?

非常感谢您的答复!

+0

你有没有找到这个原因? @józsef-vesza – Wilmar

+0

@Wilmar遗憾没有。看起来'rootInterfaceController'在这个阶段是零,所以我最终在我的接口控制器子类中实例化了我的属性。不是很好,但这是迄今为止我所得到的最好的。 :/ –

+0

嗯,我明白了。我在代码中添加了'dispatch_after',将其设置为1秒,然后'rootInterfaceController'属性具有期望的值。非常令人沮丧。 @józsef-vesza – Wilmar

回答