【SwiftUI】
TextFieldに初期値を設定する2つの方法
TextFieldに.onAppearを使用する
投稿日 2021/03/08 更新日 2021/09/26
こんにちは。当サイトの管理者「元木皇天」です。
今回はSwiftUIのTextFieldに初期値を設定する方法を2つご紹介したいと思います。
環境
OS:MacOS Big Sur
Xcode:バージョン12.3
Swift:バージョン5.3
やりたいこと
SwiftUIで画面表示時にTextFieldに初期値を設定する(placeholderではない)。
TextFieldに初期値を設定1
TextFieldに初期値を設定する方法として、2つ挙げられます。
1つは変数に値をセットしておく方法です。
TextFieldは入力値を変数に保存しておくので、保存先の変数にあらかじめ値をセットしておけば、初期値として表示されます。
実際の例が以下になります。(見やすさのため、枠線とpaddingとTextアイテムをコードに記載しています。)
struct ContentView: View {
//テキストフィールドの値
@State var tf: String = "初期値1"
var body: some View {
TextField("", text: $tf)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding(.horizontal, 20.0)
//テキストフィールドの値を表示する
Text(tf)
}
}
実際に画面を起動すると以下のようになります。
TextFieldに初期値を設定2
もう一つ、TextFieldに初期値を設定する方法を解説します。
それが「.onAppear」を使用する方法です。
初期値を設定したいTextFieldに対して使用します。
実際の使用方法は以下の通りです。
struct ContentView: View { //テキストフィールドの値 @State var tf: String = "" var body: some View { TextField("", text: $tf) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding(.horizontal, 20.0) .onAppear(){ self.tf = "初期値2" } //テキストフィールドの値を表示する Text(tf) } }
.onAppear()のなかに、テキストフィールドの値を保持する変数に、初期値に設定したい値を設定します。
実際に画面を表示させると以下のようになります。
--補足--
onAppearは、画面が描写された時に一度だけ呼び出されるメソッドです。
そのため、Viewの再描写が起こったとしてもonAppearの処理は実行されません。
また、画面が描写された際に処理されるinit()とは関係なく動作するので注意が必要です。
Apple公式のAPIは以下のリンクになりますのでよかったら参考にしてください。
Apple Developer Siteまとめ
SwiftUIのTextFieldに初期値を設定するには、あらかじめ変数に値を設定しておくことで実装できます。