質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%

Q&A

解決済

1回答

1159閲覧

Swiftリスト内の行内容をユーザーが編集できるようにする

naki888

総合スコア12

0グッド

0クリップ

投稿2020/10/14 02:27

編集2020/10/14 04:35

現在、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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Binding<String> 型にしてあげれば大丈夫だと思います。

List{ ForEach(0..<tasks.count, id: .self) { index in TextField("ここはPlaceholder", text: $tasks[index]) } .onDelete(perform: rowRemove) }

イメージ説明

編集したデータの保存は別途考慮する必要ありますね。

投稿2020/10/14 20:20

TakuyaAso

総合スコア1361

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naki888

2020/10/15 05:17

ご回答ありがとうございます。無事反映することができました。大変勉強になりました。データ保存についても考えてみます。
TakuyaAso

2020/10/15 06:02

良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問