2017-12-29 41 views
1

iPhoneから時計に変数を送信しようとしました。私はwatchConnectivityでそれを送信することができましたが、私は、私が送信した新しい変数で更新する時計アプリでピッカーを得ることができません。ここでwatchConnectivityで変数を送信しましたが、更新するウォッチアプリでピッカーを取得できません

は、時計アプリのコードです:あなたがデータを受信したとき

import WatchKit 
import Foundation 
import WatchConnectivity 

var bigDict = ["":""] 

class InterfaceController: WKInterfaceController, WCSessionDelegate { 

    lazy var keys = Array(bigDict.keys) 
    lazy var values = Array(bigDict.values) 
    var pickerItems: [WKPickerItem] = [] 

    @IBOutlet var pickerW: WKInterfacePicker! 

    @IBAction func pickerDidChange(_ value: Int) { 

    } 

    @IBAction func updateButton() { 
     for item in keys{ 
      let pickerItem = WKPickerItem() 
      pickerItem.title = item 
      pickerItem.caption = bigDict[item] 
      pickerItems += [pickerItem] 
     } 
     pickerW.setItems(pickerItems) 
    } 

    //func refreshPickerItems() { 
     //for item in keys{ 
      //let pickerItem = WKPickerItem() 
      //pickerItem.title = item 
      //pickerItem.caption = bigDict[item] 
      //pickerItems += [pickerItem] 
     // } 

     //pickerW.setItems(pickerItems) 

    // } 


    override func awake(withContext context: Any?) { 
     super.awake(withContext: context) 
     // Configure interface objects here. 
     //refreshPickerItems() 
    } 

    override func willActivate() { 
     // This method is called when watch view controller is about to be visible to user 
     super.willActivate() 
     if WCSession.isSupported() { 
      let session = WCSession.default 
      session.delegate = self 
      session.activate() 
     } 
    } 

    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { 

    } 

    func session(_ session: WCSession, didReceiveMessage message: [String : Any]) { 

     print(message) 
     bigDict = message as! [String : String] 
      print(bigDict) 
    } 
} 
+0

ようこそスタックオーバーフロー!現在のコードをお知らせください。 – the4kman

+0

にwatchKitコードが追加されました。ありがとうございました –

+0

WCSessionコールバックはバックグラウンドキューで発生しますが、通常はメインキューのUI要素を確実に更新する必要があります。メインキューにディスパッチしようとすると、あなたの問題を解決するのに役立つかどうかを確認する価値があるかもしれません。 – ccjensen

答えて

0

あなたは「updateButton()」を呼び出すべきではないでしょうか。

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) { 

    print(message) 
    bigDict = message as! [String : String] 
    updateButton() 
    print(bigDict) 


} 
関連する問題