今回は、機能の ON/OFF などに使う Toggle についてのサンプルを紹介します。
SwiftUIのToggle(UISwitch)の使い方
UIKit では UISwitch と呼ばれていたものが、SwiftUI では Toggle というものに変わっています。
まず、イニシャライザーを見ていきましょう。
Toggle(isOn: Binding<Bool>, label: () -> ToggleStyleConfiguration.Label)
isOn: Binding<Bool> には bool 値の状態変数(@State)を渡します。実際にスイッチを ON/OFF するとこの Bool 値が切り替わります。
label: () -> ToggleStyleConfiguration.Label にはスイッチのラベルを返すクロージャを渡します。ラベルを返すだけでなく、isOn の Bool 値を見て任意の処理分岐をさせることができます。
次に表示スタイルですが、.toggleStyle メソッドで指定します。
.toggleStyle(SwitchToggleStyle())
DefaultToggleStyle は SwitchToggleStyle と同じ結果となります。
公式リファレンスには CheckBoxToggleStyle というものが載っているのですが、Xcode 上で設定してみようとしたら、「‘CheckboxToggleStyle’ is unavailable in iOS」と言われてしまいました。
deprecated になっている訳でもないので、今後追加される予定なのでしょうか?ご存知の方がおりましたらコメント頂けるとありがたいです。
CheckBoxToggleStyle についてわかったら更新します。
※コメント頂きまして、公式リファレンスによると MacOS アプリ用のスタイル指定のようでした(tnさんありがとうございます)。
最後に冒頭サンプルの全コードです。
struct ContentView: View {
@State private var isOn = false
var body: some View {
Form {
Toggle(isOn: $isOn) {
if self.isOn {
Text("設定は ON です。")
} else {
Text("設定は OFF です。")
}
}
.toggleStyle(SwitchToggleStyle())
}
}
}
以上
ちょうどさっき調べていましたが、AppleのドキュメントにmacOS 10.15+と書いてあったので、macOS用みたいです。
https://developer.apple.com/documentation/swiftui/checkboxtogglestyle
tnさん
>macOS 10.15+と書いてあったので、macOS用みたいです。
コメントありがとうございます。ドキュメントの確認不足でした、すみません。
この旨記事に追記いたしました。