watchOS 2:在初始接口控制器

时间:2015-09-28 13:22:57

标签: ios swift watchkit apple-watch watch-os-2

从watchOS 2开始,我们有一个ExtensionDelegate对象,类似于UIApplicationDelegate(对应用程序生命周期事件做出反应)。

我希望获得对第一个Interface Controller对象的引用,该对象将在启动时显示,以在其上设置属性(例如传入数据存储对象)。

根据docsrootInterfaceController上的WKExtension属性回复了初始控制器:

  

根接口控制器位于应用程序的主故事板中   并具有与之关联的主入口点对象。 WatchKit   在启动时显示根接口控制器,尽管如此   app可以在发布之前呈现不同的界面控制器   序列完成。

所以我在ExtensionDelegate中尝试以下内容:

func applicationDidFinishLaunching() {
    guard let initialController = WKExtension.sharedExtension().rootInterfaceController else {
        return
    }

    initialController.dataStore = DataStore()
}

即使显示正确的接口控制器,此时rootInterfaceController也为零。有趣的是,如果我在接口控制器的willActivate()中查询相同的属性,则属性设置正确。

在iOS应用中,您已经可以在applicationDidFinishLaunching()中获得根视图控制器,我认为它应该对watchOS也一样。

有没有办法在界面控制器显示之前(从外部)设置属性?这是一个错误吗?

非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

您可以将代码移至applicationDidBecomeActive。

此页面描述了观看应用的状态。调用applicationDidFinishLaunching时,应用程序处于非活动状态。

https://developer.apple.com/library/watchos/documentation/WatchKit/Reference/WKExtensionDelegate_protocol/index.html