2016-04-25 5 views
0

私はモーションデータを悪用しようとしています。 MotionKit Frameworkを使用してテストアプリを作成しました。 print(testString)は、コンソールに1秒間隔で変数を正しく表示します。しかし、私のtestLabelは一度更新されません。Swift/MotionKit.framework /ラベルの更新方法

import UIKit 
import MotionKit 

class ViewController: UIViewController { 

@IBOutlet weak var testLabel: UILabel! 

let motionKit = MotionKit() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    motionKit.getAccelerometerValues(1.0) { (x, y, z) ->() in 
     let testString = String(x) 
     self.testLabel.text = testString 
     print(testString)    
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
} 

私には何が欠けていますか?ヘルプは非常に感謝しています。

答えて

1

だけ

dispatch_async(dispatch_get_main_queue(), ^{ 
     self.testLabel.text = testString 
    }); 
+0

ありがとうdispatch_asyncであなたのテキストフィールドのテキストコードをラップします。それはそれをしました。なぜ私に説明できますか?だからコピー&ペーストだけではありませんが、理解してください^^ –

+0

すべてのUIはMainThreadで更新する必要があります。あなたのmotionKit.getAccelerometerValuesはバックグラウンドスレッド上で実行されるので、そのスレッド上でラベルを更新するとUIに更新されないので、メインスレッドのラベルを更新するために、dispatch_async(dispatch_get_main_queue()...)内でラップする必要があります –

+0

大丈夫あなたの努力に感謝します:) –

関連する問題