gpt4 book ai didi

ios - 如何在通过 WatchConnectivity 接收数据后更新 WKInterfaceController/UIViewControllers

转载 作者:行者123 更新时间:2023-11-29 01:34:49 27 4
gpt4 key购买 nike

我在一些帖子中读到在委托(delegate)而不是 Controller 中设置 WCWatchConnectivity session 。您如何将委托(delegate)中收到的数据传输到 Controller 以进行进一步处理(在 Swift 中)?

最佳答案

在您的委托(delegate)类中:

如果您需要更新多个 View Controller ,您可以将您的委托(delegate)类实现为单例,以便能够从您的应用程序或扩展的任何部分添加观察者(就像 Apple 对其 NSNotificationCenter 类所做的那样):

class WatchSessionDelegate {
static let sharedDelegate = WatchSessionDelegate()
private override init() {}
....
}

你可以定义一个观察者协议(protocol):

protocol DataObserver {
func dataDidChange(data: AnyObject)
}

然后您将一个观察者数组添加到您的委托(delegate)类:

private var observers = [DataObserver]()

添加和删除观察者的两种方法:

func addObserver(observer: DataObserver) {
// add the observer to observers
}

func removeObserver(observer: DataObserver) {
// remove the observer from observers
}

然后,当接收到数据时,您遍历观察者并调用协议(protocol)中定义的方法:

func didReceiveData(data: AnyObject) {
for observer in observers {
observer.dataDidChange(data)
}
}

在您的 UIViewControllers/WKInterfaceController 类中:

要将数据更改通知 UIViewController 或 WKInterfaceController,只需使其符合 DataObserver 协议(protocol)并将其添加到观察者即可:

WatchSessionDelegate.sharedDelegate.addObserver(self)

并实现协议(protocol)中的方法:

func dataDidChange(data: AnyObject) {
// update UI
}

关于ios - 如何在通过 WatchConnectivity 接收数据后更新 WKInterfaceController/UIViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com