在 didReceiveUserInfo 之前调用 TableView 设置
TableView setup gets called before didReceiveUserInfo
我的 table 总是以空结尾,因为 didRecieveUserInfo
直到 doTable()
被调用后才被调用。
我在 didRecieveUserInfo
中获取了所有正确的数据,但我的应用不知道这一点,因为 didRecieveUserInfo
直到 [=34] 之后才被调用=] 已经设置好。
有什么想法吗?我觉得它一定很简单,这是我的代码:
ExtensionDelegate
:
func applicationDidFinishLaunching() {
if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
if let tCValue = userInfo["Tr"] as? String, let mValue = userInfo["Mp"] as? String {
receivedData.append(["Tr" : tCValue , "Mp" : mValue])
evn.append(Evnt(dataDictionary: ["Tr" : tCValue , "Mp" : mValue]))
} else {
// None
}
}
InterfaceController
:
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
doTable()
}
func doTable() {
if WCSession.defaultSession().reachable == true {
// SO
let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate
let evM = myDelegate.evn
self.rowTable.setNumberOfRows(evM.count, withRowType: "rows")
for (index, evt) in evM.enumerate() {
if let row = rowTable.rowControllerAtIndex(index) as? TableRowController {
row.mLabel.setText(evt.maT)
} else {
// None
}
}
}
else {
// None
}
}
在接口控制器中实现 WCSession 委托,并在收到数据后调用 doTable()
我的 table 总是以空结尾,因为 didRecieveUserInfo
直到 doTable()
被调用后才被调用。
我在 didRecieveUserInfo
中获取了所有正确的数据,但我的应用不知道这一点,因为 didRecieveUserInfo
直到 [=34] 之后才被调用=] 已经设置好。
有什么想法吗?我觉得它一定很简单,这是我的代码:
ExtensionDelegate
:
func applicationDidFinishLaunching() {
if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
if let tCValue = userInfo["Tr"] as? String, let mValue = userInfo["Mp"] as? String {
receivedData.append(["Tr" : tCValue , "Mp" : mValue])
evn.append(Evnt(dataDictionary: ["Tr" : tCValue , "Mp" : mValue]))
} else {
// None
}
}
InterfaceController
:
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
doTable()
}
func doTable() {
if WCSession.defaultSession().reachable == true {
// SO
let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate
let evM = myDelegate.evn
self.rowTable.setNumberOfRows(evM.count, withRowType: "rows")
for (index, evt) in evM.enumerate() {
if let row = rowTable.rowControllerAtIndex(index) as? TableRowController {
row.mLabel.setText(evt.maT)
} else {
// None
}
}
}
else {
// None
}
}
在接口控制器中实现 WCSession 委托,并在收到数据后调用 doTable()