Swift 如何在watchOS中获取接口控制器的实时实例?

Swift 如何在watchOS中获取接口控制器的实时实例?,swift,swift2,watchos-2,watchos,Swift,Swift2,Watchos 2,Watchos,在我的extensionelegate中,我想获得一个接口控制器的实例。我正在使用基于页面的导航 例如,我可以在iOS中这样做: if let controller = self.tabBarController?.viewControllers?[1] as? TimesController { controller.myVariable = nil } 在watchOS中如何执行此操作?您不能。watchOS上没有页面视图控制器的概念,它可以容纳一组接口控制器 由于无法为页面序列传递另一

在我的
extensionelegate
中,我想获得一个接口控制器的实例。我正在使用基于页面的导航

例如,我可以在iOS中这样做:

if let controller = self.tabBarController?.viewControllers?[1] as? TimesController {
 controller.myVariable = nil
}

watchOS
中如何执行此操作?

您不能。watchOS上没有页面视图控制器的概念,它可以容纳一组接口控制器

由于无法为页面序列传递另一个上下文,因此需要在其
willActivate()
方法中更新特定接口控制器的属性:

override func willActivate() {
    super.willActivate()
    myVariable = ...
}

使用以下代码:

guard let interface = WKExtension.shared().rootInterfaceController as? InterfaceController else {
    return
}

从Watch OS 4+开始,我们可以使用
visibleInterfaceController

WKExtension.shared().visibleInterfaceController

可视接口控制器 返回最后一个可见的接口控制器

参考:


你好@smargo,欢迎来到Stack Overflow!通常我们不鼓励只使用代码的答案。你可以添加一个书面的英语解释为什么/如何解决这个问题吗?嗨,欢迎来到堆栈溢出。一个高质量的答案应该包括你的答案如何解决原始问题的描述