【问题标题】:How to get live instance of interface controller in watchOS?如何在 watchOS 中获取接口控制器的实时实例?
【发布时间】:2016-06-28 19:53:29
【问题描述】:

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

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

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

如何在watchOS 中执行此操作?

【问题讨论】:

    标签: swift swift2 watchos-2 watchos


    【解决方案1】:

    使用以下代码:

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

    【讨论】:

    • 嗨@smargo,欢迎来到 Stack Overflow!通常,我们不鼓励仅使用代码的答案。您能否添加一个书面的英文解释,说明为什么/如何解决问题?
    • 您好,欢迎来到 Stack Overflow。高质量的答案应包括对您的答案如何解决原始问题的描述
    【解决方案2】:

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

    WKExtension.shared().visibleInterfaceController
    

    可见接口控制器

    返回最后一个可见的界面控制器。

    参考:https://developer.apple.com/documentation/watchkit/wkextension/2868459-visibleinterfacecontroller

    【讨论】:

      【解决方案3】:

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

      由于您无法传递另一个上下文以准备页面转场,因此您需要在其willActivate() 方法中更新该特定接口控制器的属性:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-29
        相关资源
        最近更新 更多