加速度センサの値をLabelに表示させたいです。
数値を表示させたいのにUILabelの表示がシミレーションにおいて、Labelのままで、表示されません。エラーメッセージはないです。何が悪いのかわかりません。
該当のソースコード
swift
1import UIKit 2import CoreMotion 3 4class ViewController: UIViewController { 5 6 var myMotionManager: CMMotionManager! 7 8 // ストーリーボードを使ってプロパティを作成 9 @IBOutlet weak var xValue: UILabel! 10 @IBOutlet weak var yValue: UILabel! 11 @IBOutlet weak var zValue: UILabel! 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 myMotionManager = CMMotionManager() 17 18 // 加速度計の更新周期を設定 19 myMotionManager.accelerometerUpdateInterval = 1.0 20 21 // 加速度の値を取得、表示 22 let accelerometerHandler = {(data:CMAccelerometerData?, 23 error: NSError?) -> Void in 24 25 self.xValue.text = "x=(data!.acceleration.x)" 26 self.yValue.text = "y=(data!.acceleration.y)" 27 self.zValue.text = "z=(data!.acceleration.z)" 28 } 29 30 31 func didReceiveMemoryWarning() { 32 super.didReceiveMemoryWarning() 33 // Dispose of any resources that can be recreated. 34 } 35} 36}
下記のように、コードを変更しました。```swift
import UIKit import CoreMotion class ViewController: UIViewController { var myMotionManager: CMMotionManager! @IBOutlet weak var xValue: UILabel! @IBOutlet weak var yValue: UILabel! @IBOutlet weak var zValue: UILabel! override func viewDidLoad() { super.viewDidLoad() myMotionManager = CMMotionManager() // 加速度計の更新周期を設定 myMotionManager.accelerometerUpdateInterval = 1.0 // 加速度 let accelerometerHandler = {(data:CMAccelerometerData?, error: NSError?) -> Void in self.xValue.text = "x=(data!.acceleration.x)" self.yValue.text = "y=(data!.acceleration.y)" self.zValue.text = "z=(data!.acceleration.z)" } //追記したコード myMotionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler : accelerometerHandler as ! CMAccelerometerData) } }
変更しました
import UIKit import CoreMotion class ViewController: UIViewController { var myMotionManager: CMMotionManager! @IBOutlet weak var xValue: UILabel! @IBOutlet weak var yValue: UILabel! @IBOutlet weak var zValue: UILabel! override func viewDidLoad() { super.viewDidLoad() myMotionManager = CMMotionManager() // 加速度計の更新周期を設定 myMotionManager.accelerometerUpdateInterval = 1.0 // 加速度 NSErrorをErrorに変更 let accelerometerHandler = {(data:CMAccelerometerData?, error: Error?) -> Void in self.xValue.text = "x=(data!.acceleration.x)" self.yValue.text = "y=(data!.acceleration.y)" self.zValue.text = "z=(data!.acceleration.z)" } //必要ない場所を削除 myMotionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler : accelerometerHandler ) } }
コードは ``` で囲って下さい。
回答1件
あなたの回答
tips
プレビュー