前提・実現したいこと
SwiftUIにて、構造体配列を使ってリストを実装しようとしています。また、リストは「.indices」を使用して表示したいです。
「.indices」を採用する理由としては、今後テキストデータをバインディングさせたい為です。
以下のコードで想定している動作の流れとしては、【ボタンを押下】→【配列に構造体要素を追加】→【リストで全要素を表示】を目指しております。
該当のソースコード
#構造体作成。 struct SampleModel: Identifiable { var id = UUID() var value :String var text: String init(value:String, text: String){ self.value = value self.text = text } } #ObservableObjectで配列を用意。 class Data: ObservableObject { @Published var array: [SampleModel] init(){ self.array = [SampleModel(value: "356", text: "")] #テスト用初期要素 } } #以下、Viewを作成。 struct ContentView: View { @ObservedObject var data: Data = Data() var body: some View { VStack{ #ボタンを用意。押下時に要素を追加。 Button(action: { data.array.append(SampleModel(value: "1234", text: "")) debugPrint("追加") }, label: { Text("Button") }) #テスト用リスト #この方式の場合、ボタン押下と同時にリストのレコードが追加される。 #この場合データバインディングの実装が難しい? List { ForEach(self.data.array) { sample in Text(sample.value) } } #目指している表示方法 #ボタンを押下してもレコードは追加されない。(初めから入っているテスト用初期要素は表示される。) List { ForEach(self.data.array.indices) { index in Text(data.array[index].value) } } } } }
試したこと
どういった原因で追加更新されないのかわからず、手詰まりの状態です。
初歩的な質問で恐縮ですが、ご教授頂きたいです。
補足情報(FW/ツールのバージョンなど)
Xcode 12.5.1
iOS 14.0向け
回答1件
あなたの回答
tips
プレビュー