前提・実現したいこと
ボタンを押したら、入力可能なTextFieldおよび、TextEditorを生成させたい。
ユーザがボタンを押したら、入力項目を自由に増やせるような機能を作成したいと考えていますが、実装できずにいます。
以下StackOverFlowを参照して試してはみましたが、TextEditorは文字入力ができず、TextFieldは文字入力はできるが入力後、生成ボタンを押すと内容が消えてしまいます。
https://stackoverflow.com/questions/60589725/foreach-textfield-in-swiftui
以下に載せているコードでボタンを押下すると、上手く生成されますが、ボタンを押すとTextField内に書いた内容が初期化されてしまうのと、入力された内容の取得方法がわからない状況です。
ご教授お願いいたします。
実現イメージ (ボタンを押した時の動作)
発生している問題・エラーメッセージ
以下のような紫のワーニングが出ます
Accessing State's value outside of being installed on a View. This will result in a constant Binding of the initial value and will not update.
該当のソースコード
Swift
1import SwiftUI 2 3struct Student: Identifiable { 4 var id = UUID() 5 @State var name = "" 6} 7 8struct Class: Identifiable { 9 var id = UUID() 10 var students = [ 11 Student(name: "Yo"), 12 Student(name: "Ya"), 13 ] 14} 15 16struct ContentView: View { 17 @State private var newClass = Class() 18 19 var body: some View { 20 VStack() { 21 Button(action: { 22 newClass.students.append(Student(name: "test")) 23 }){ 24 Text(" Add ").padding() 25 .background(Color.black) 26 .foregroundColor(.white) 27 } 28 Form { 29 ForEach(self.newClass.students) { student in 30 TextField("",text: student.$name) // ★ここで紫ワーニング 31 TextEditor(text: student.$name) // ★ここで紫ワーニング 32 } 33 } 34 } 35 } 36} 37
補足情報(FW/ツールのバージョンなど)
SwiftUI、Xcode
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。