WatchConnectivity如何在多个WKInterfaceControllers之间共享会话?

时间:2016-07-15 08:32:16

标签: ios swift watch-os-2 watchconnectivity

我有一种情况需要在多个WKInterfaceControllers之间共享WCSession。单例方法无法工作,一旦将委托设置为类,其他类中的所有委托都将失效。场景:接口A基于数据内容发送和接收数据,呈现接口B.点击接口B,将请求和接收附加数据。你如何在A和B之间分享WCSession?

2 个答案:

答案 0 :(得分:1)

The other answer并未解释应用范围的会话是否有效。

可以使用适用于所有界面控制器的应用范围WCSession单例。您只需在应用程序生命周期的早期实例化会话管理器,并让它成为自己的委托。

会话管理器(单例)可以处理接口控制器的所有传输,而不是尝试让每个接口控制器处理会话委派(这将无法正常工作)。

如其他答案中所述,您可以使用通知让感兴趣的接口控制器知道新数据何时到达。

使用模块化方法(例如会话或数据管理器)有助于将此类代码保留在控制器之外,而控制器实际上并不属于该控制器。它还可以更轻松地测试和使用每个模块。

我不会在这里重复代码,因为Stack Overflow上已经发布了几个现有的答案,以及 网上的文章,详细介绍了这项技术。例如:

您经常会在较窄的问题中找到这些类型的答案,这些问题会询问如何在手表应用程序及其复杂控制器之间共享数据。

答案 1 :(得分:0)

使用NSNotification并侦听所有视图控制器中的更改。