【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に初期値が設定されて表示される

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()のなかに、テキストフィールドの値を保持する変数に、初期値に設定したい値を設定します。

実際に画面を表示させると以下のようになります。

TextFieldに初期値が設定されて表示される

--補足--

onAppearは、画面が描写された時に一度だけ呼び出されるメソッドです。

そのため、Viewの再描写が起こったとしてもonAppearの処理は実行されません。

また、画面が描写された際に処理されるinit()とは関係なく動作するので注意が必要です。

Apple公式のAPIは以下のリンクになりますのでよかったら参考にしてください。

Apple Developer Site

まとめ

SwiftUIのTextFieldに初期値を設定するには、あらかじめ変数に値を設定しておくことで実装できます。

参考文献・おすすめ文献