以下のコードを二つのファイルに分けて書きました。
このコードで、dataArrayを更新し、リストで表示しようとしています。
変数dataArrayが二ヶ所で宣言されています。
試行錯誤しながら修正しているところなのですが、現状では//###_1と//###_4が紐づいて動き、//###_2と//###_3が紐づいて動いているようです。
dataArrayの宣言を一つにして、それを//###_3と//###_4で使いたいのですが、上手くいきません。
基本的な事だとは思いますが、よくわかりません。
どうのように書くと良いのでしょうか。
swift
1#ContentView.swift) 2import SwiftUI 3 4struct Data: Identifiable { 5 var id: Int 6 var data: String 7 8 init(id: Int, data: String) { 9 self.id = id 10 self.data = data 11 } 12} 13 14var dataArray:[Data] = [] //###_1 15struct ContentView: View { 16 @State var url: String = "" 17 @State var dataArray:[Data] = [] //###_2 18 19 var body: some View { 20 VStack { 21 HStack { 22 TextField("URLを入力してください", text: $url) 23 Button(action: { 24 self.dataArray.append(Data(id:self.dataArray.count, data:self.url)) //###_3 25 }) { 26 Text("Add") 27 } 28 } 29 List(dataArray) { item in 30 URLRowView(rowData: item) 31 } 32 } 33}
swift
1#(URLRowView.swift) 2import SwiftUI 3 4//1行分作成用の構造体 5struct URLRowView: View { 6 var rowData:Data 7 8 var body: some View{ 9 HStack { 10 Text(String(rowData.id)) 11 Text(rowData.data) 12 } 13 } 14} 15 16struct URLRowView_Previews: PreviewProvider { 17 static var previews: some View { 18 URLRowView(rowData:dataArray[0]) //###_4 19 } 20}
あなたの回答
tips
プレビュー