【Swift3】【WatchKit】WKInterfaceSwitchの状態を取得する

  • 2
    Like
  • 0
    Comment

WKIntarfaceSwichの状態を取得したい

初めてWatch対応アプリに挑戦中の私がいきなり壁にぶち当たったのでまとめ。

watchOSにて、ボタンを押下した時にSwitchのon / offを取得して
何やかんやしたかったのにできませんでした。

screenshot.png

↑これのtapを押したらswitchがonなのかoffなのか取得したかった。

やったこと

InterfaceController.swift
@IBOutlet var testSwitch: WKInterfaceSwitch!

@IBAction func tapped() {
     print(testPicker.isOn)  // エラー
}

UISwitchではisOnでSwitchの状態を取得できましたが、
WKInterfaceSwitchではダメっぽい。

そもそもSwitchの状態を取得するプロパティはないっぽい。

参考:check if switch is on boolean watchkit(stackOverflowに飛びます)

Actionで取得はできるみたいなので、こうするしか今の私には無理でした。

InterfaceController.swift
//@IBOutlet var testSwitch: WKInterfaceSwitch!
var state = true

@IBAction func switchChanged(_ value: Bool) {
     if value {
          state = true
     }else {
          state = false
     }
}

@IBAction func tapped() {
     print(state)
}

WKInterfacePickerでも同様っぽい

Switchと同じく、PickerもselectedRow()がダメでした。
こちらも取得するプロパティがないっぽい。

Actionでゴリゴリするしかないのかなあ。