今回はButtonの配置方法と使い方について説明します。
Buttonには、
ボタンをタップした時の処理内容を記述する箇所
Buttonの表示について記述する箇所
があります。
それぞれの記述の仕方をしっかりと覚えておきましょう。
1. 環境
今回紹介する内容で動作確認したXcodeとSwiftのVersionは以下になります。
【Swift】5.3.2
2. ボタンの定義の仕方
Buttonの引数には”action”と”label”を用意します。
actionには、ボタンをタップした際の処理内容を記述し
labelには、ボタンに表示される内容を記述します。
Button(action: {"処理の為のコード"}, label: { "表示内容" })
“表示内容”を外に出して、次のように記述することもできます。
Button(action: {"処理の為のコード"}){ "表示内容" }
3. ボタンの配置を行う
実際にコードを書いて、ボタンの配置を行うと次のようになります。
2通りの配置方法を紹介します。
import SwiftUI struct ContentView: View { var body: some View { VStack{ Button(action: {}, label: { Text("Button") }) Button(action: {}){ Text("Button") } } } }
プレビューモードで確認すると次のようになります。
VStackの中にボタンを二つ配置さているので、縦に並んで配置されています。
“action”には何も記述していないので、このままだとボタンを押しても何も処理は行われません。
4. 処理内容について-ボタンをタップしてテキストの値を変更する
ボタンを押した時の処理内容を記述した時の例を挙げます。
1. コード例
コード例を示します。
import SwiftUI struct ContentView: View { @State var text:String = "Button is not tapped" var body: some View { VStack{ Text(self.text) Button(action: { self.text = "Button is tapped" }, label: { Text("Button") }) } } }
ここでは、textという変数を定義しています。
定義したtextを”Text”というテキストを表示するコントロールで表示するようにしつつ、Buttonの”action”内部で変数の中身を変化させるようにしています。
つまり、ボタンが押されるとTextの表示内容が“Button is not tapped”から”Button is tapped”に変化します。
2. “@State”について
変数の定義を行うときに”@State”という属性を使用しています。
@Stateが付けられたプロパティを”State変数“と呼び
プログラム内での処理によって、Viewの表示を変更したい場合はState変数として変数を定義する必要があります。
今回の場合はtextというプロパティの変更をリアルタイムでText Viewに反映させたいので、textをState変数として定義しています。
3. シミュレータで動作確認
シミュレータで動作確認してみます。
まず、ボタンをタップする前のGUIがこちらになります。
Textには”Button is not tapped”と表示されています。
ボタンをタップした後のGUIがこちらになります。
Textの表示が切り替わり、”Button is tapped”となっています。
5. まとめ
どうでしたでしょうか?
今回はSwiftUIのボタンの使用方法について解説しました。
コメント