独立于活动界面控制器在 Apple Watch 上显示消息的最佳方式是什么?

What is the best way to show a message on Apple Watch independently of the active interface controller?

我想在 Apple Watch 上显示本地消息(由 WatchKit 代码生成)。我的问题是该消息可能由当前活动界面控制器之外的代码段触发。

独立于当前活动的(最顶层的)界面控制器以模态方式呈现新界面控制器的最佳方式是什么?

一种方法是获取指向当前活动界面控制器的指针。但是如何以简单的方式做到这一点呢?

好吧,我什至不相信上述方法是好的方法。如果最顶层的控制器在向界面控制器发送消息后不久就被关闭了怎么办?那么消息可能不会显示很长时间或根本不会显示。

是否可以在独立于当前活动(最顶层)接口控制器的所有内容之上以模式方式呈现消息接口控制器?

我应该使用本地通知吗?有没有类似 UIAlertView 的东西?

解决这个问题最好最简单的方法是什么?

WatchKit 中没有任何UIAlertView 或WKAlertView。您必须使用文本视图初始化一个新的视图控制器,并将您想要显示的字符串传递给它。

您可以使用此方法:

Swift:

presentControllerWithName([Name] , context: [String])

Objective-C:

- presentControllerWithName:context:

要独立于活动接口控制器显示消息,可以使用 presentControllerWithName:context:main 接口控制器(带有故事板中的箭头)。即使 main 接口控制器当前未处于活动状态,这也能正常工作。

要使此解决方案起作用,调用 presentControllerWithName:context: 的方法必须有一个指向 main 接口控制器的指针。这可以通过将 selfmain 接口控制器传递给其他接口控制器和方法来实现。

但是,有时我想显示来自层次结构深处对象的消息。而且我不想将指向 main 接口控制器的指针传递给可能想要向用户显示消息的每个方法。

因此,我目前的解决方案是将指向 main 接口控制器的指针存储在一个全局变量中(使用 extern),然后从这个 [=25] 中呈现=]main界面控制器。

致谢:感谢 "Schemetrical" 和 "Mike Swanson" 提出的意见解决了这个问题。