0

我正在使用watchOS 2Xcode 7.3。我在手表应用中有 3 个接口控制器(IC)。我正在使用"[WCSession defaultSession] sendMessage"方法在 3 个不同的场景中从 AppDelegate 向这 3 个 IC 发送消息。接收方法在所有 3 个 IC 中都提供。但是消息主要是在第三个 IC 中接收的。我应该怎么做才能收到特定 IC 中的消息。

4

3 回答 3

2

我建议进行一些重新架构,因为现在您的接口控制器正在执行“网络”和模型工作。

我推荐的方法是创建一个“持久性管理器”,即 WCSession 委托。接收到的任何数据都会被持久化,然后使用观察者或通知模式通知代码的其他部分更改。然后,如果与他们呈现的 UI 相关的任何内容已更新(向表格行添加新条目、收藏新项目等),他们将继续并重新运行任何数据查询并更新他们的 UI。

这有许多优点,例如降低接口控制器的复杂性,更好地分离关注点;但也许最重要的是,它使您的扩展程序能够在后台运行(没有可见的界面控制器),同时能够接收数据,将其持久化,然后在下次启动应用程序时利用它。

于 2016-06-09T16:27:52.320 回答
1

您可以检查您发送的字典的键。您可以使用三个不同的键,然后检查它是否是正确接口控制器的正确键。

于 2016-06-24T14:40:50.137 回答
0

在手表应用扩展的 ExtensionDelegate.m 中给出didReceiveMessage方法。在sendMessage方法中传递消息要发送到的接口控制器的名称。在 if-else 条件下,使用通知中心调用预期接口控制器中的方法。

于 2016-06-27T10:44:59.563 回答