2016-01-27 52 views
0

一個WKInterfaceController的公共方法,我呼籲這引發了我的呼叫從ExtensionDelegate講座WatchKit

`-(void)session:(WCSession *)session didReceiveApplicationContext:(NSDictionary<NSString *,id> *)applicationContext` 

方法ExtensionDelegate

`[[WCSession defaultSession] updateApplicationContext:message error:error]` 

方法。但是從這裏我想在WKInterfaceController中調用一個公共方法來更新我的UI。我不想重新加載根控制器,因爲此特定控制器不是根控制器。是否可以調用ExtensionDelegate的任何公共方法。我可以打電話給

-(void)session:(WCSession *)session didReceiveApplicationContext:(NSDictionary<NSString *,id> *)applicationContext

從某處接口控制器,而不是ExtensionDelegate內?

回答

0

您可以使用WCSession

public func sendMessage(message: [String : AnyObject], replyHandler: (([String : AnyObject]) -> Void)?, errorHandler: ((NSError) -> Void)?) 

這將調用WCSessionDelegate

public func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) 

方法委託類。這可以從應用程序和擴展中用於即時消息傳輸。閱讀more

+0

問題是我必須調用基於定時器的更新UI方法。 updateApplicationContext方法在定時器調用時被調用,這是從我的watchConnectivityManager中調用的。當這個方法被調用時,它會觸發ExtensionDelegate中相應的recieveApplicationContext方法。我想知道的是可以從任何interfaceController而不是ExtensionDelegate調用recieveApplicationContext方法 – JMS