現在、swiftでリストを作成しているのですが、リストで表示させた行の内容をナビゲーションで飛ばさず、リスト画面のまま、編集したいと考えているのですが、行き詰まっております。
下記のようにするとCannot convert value of type 'Binding<[String]>' to expected argument type 'Binding<String>’というエラー発生。
List{
ForEach(0..<tasks.count, id: .self) { task in
TextField("PlainTextFieldStyle", text: $tasks)}
//Text(self.tasks[task])}
.onDelete(perform: rowRemove)
}
リストの行の配列の要素の中身をユーザーが変更できるようにできれば良いのですが、swiftUIの場合、それをどのような仕組みで実現できるのか、ご教示いただければ幸いです。
何卒よろしくお願いいたします。
swift
1import SwiftUI 2 3struct ContentView: View { 4 5 @State var tasks = ["リスト1", "リスト2", "リスト3", "リスト4", "リスト5"] 6 //@State var tasks = [String]() 7 @State var newtask = "" 8 9 var body: some View { 10 VStack { 11 NavigationView{ 12 List{ 13 ForEach(0..<tasks.count, id: .self) { task in 14 Text(self.tasks[task])} 15 .onDelete(perform: rowRemove) 16 } 17 .navigationBarTitle("Menu") 18 } 19 HStack { 20 Spacer() 21 Button(action: { 22 self.tasks.append(self.newtask) 23 self.newtask = "" 24 //self.tasks = createTasks() 25 }) { 26 Image(systemName:"pencil.tip.crop.circle.badge.plus") 27 .resizable() 28 .foregroundColor(/*@START_MENU_TOKEN@*/.black/*@END_MENU_TOKEN@*/) 29 .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 30 .scaledToFit() 31 .frame(width: 80, height: 80) 32 } 33 } 34 } 35 } 36 37 func rowRemove(offsets: IndexSet) { 38 tasks.remove(atOffsets: offsets) 39 } 40} 41 42struct ContentView_Previews: PreviewProvider { 43 static var previews: some View { 44 ContentView() 45 } 46}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/15 05:17
2020/10/15 06:02