2016-04-25 3 views
0

Ich versuche, Bewegungsdaten auszunutzen. Ich habe eine Test-App mit dem MotionKit Framework erstellt. print(testString) druckt die x Variablen korrekt in einem Intervall von einer Sekunde an die Konsole. Aber mein testLabel wird nicht einmal aktualisiert.Swift/MotionKit.framework/wie man Etikett aktualisiert

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() 
} 
} 

Was fehlt mir? Hilfe wird sehr geschätzt.

Antwort

1

wickeln Sie Ihre Textfeld Textcode in dispatch_async

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

Ihnen danken. das hat es getan. Kannst du mir erklären wieso? also kopiere ich nicht nur, sondern verstehe es auch, ^^ –

+0

Alle UI aktualisiert sollte auf MainThread erfolgen. Ihre motionKit.getAccelerometerValues ​​wird im Hintergrund-Thread ausgeführt. Wenn Sie also Ihre Bezeichnung für diesen Thread aktualisieren, wird sie nicht auf UI aktualisiert. Um die Beschriftung des Hauptthreads zu aktualisieren, müssen Sie sie in dispatch_async (dispatch_get_main_queue()) umwandeln mainthread –

+0

okay vielen Dank für Ihre Mühe :) –