【发布时间】:2017-08-28 10:59:27
【问题描述】:
我正在开发我的第一个 Apple Watch 应用(我的 iOS 应用的扩展)。我在将数据从一个 WKInterfaceController 发送到另一个时遇到了一个小问题。
我的第一个控制器 (InterfaceController.swift) 有 didReceiveMessage,它从我的 iOS 应用程序接收数据。
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
let myQrValue = message["qrCode"] as! String
let myQrImage = message["qrCodeImageData"] as! Data
var myData: [AnyHashable: Any] = ["myQrValue": myQrValue, "myQrImage": myQrImage]
if myQrValue.isEmpty == false {
WKInterfaceController.reloadRootControllers(withNames: ["QrScreen"], contexts: [myData])
}
}
然后在我的 第二个控制器 (QrInterfaceController.swift) 中,我必须在下面获取从第一个控制器发送的数据 -
override func awake(withContext context: Any?) {
super.awake(withContext: context)
print("context \(context)")
if let myData = context {
print("myData \(myData)")
// userQrNumber.setText(myData)
}
if let myQrImage = myQrImage {
userQrImage.setImageData(myQrImage)
}
if let myQrLabel = myQrLabel {
userQrNumber.setText(myQrLabel)
}
self.setTitle("")
}
我很困惑(可能是简单/愚蠢的问题)如何从第二个控制器的上下文中解析我的数据?
此外,didReceiveMessage 仅在我启动放置 sendMessage 代码的 ViewController 时第二次起作用。正常吗?
【问题讨论】:
标签: ios swift watchkit watchconnectivity