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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1625閲覧

【SwiftUI】List + TextFieldで文字を編集可能なリストを実装したい。

Jene

総合スコア13

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/08/16 12:05

前提・実現したいこと

@Stateのような状態によって画面描画される編集可能なリストを実装したい。

該当のソースコード

Swift

1#モデル作成 2struct ListModel { 3 var text: String 4 var value: String 5} 6#行作成 7struct ListRow: View { 8 @Binding var model: ListModel 9 var body: some View { 10 HStack{ 11 TextField.init("Memo", text: self.$model.text) 12 Text(model.value) 13 } 14 } 15} 16# 17struct ContentView: View { 18 @State var data: [ListModel] = [ 19 ListModel(value:"123", text: ""), 20 ListModel(value:"456",text: ""), 21 ListModel(value:"789",text: "") 22 ] 23 #構造体配列に要素を追加するテスト処理 24        func test(){ 25 data.append(ListModel(value: "987", text: "")) 26 } 27 28 var body: some View { 29 VStack { 30 #要素追加ボタンの作成 31 Button(action: 32 { 33 test() 34 }, label: { 35 Text("Button") 36 }) 37 #リスト表示 38 List { 39 ForEach(self.data.indices, id: .self) { index in 40 ListRow.init(model: self.$data[index]) { 41 } 42 } 43 } 44 } 45 } 46}

試したこと

@Stateを@ObservableObjectに変更して対応しようとしてのですが、うまく動かず手詰まりな状態です。

補足情報(FW/ツールのバージョンなど)

Xcode 12.5.1
iOS 14.0向け

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

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

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

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

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

hoshi-takanori

2021/08/16 21:51

だいたい動くように見えますが、問題はその先で何をしたいかでしょうね…。
Jene

2021/08/17 01:36

目指している形はアイテムを配列に追加すると、リアルタイムでリスト形式でアイテムが表示され、かつリストのアイテムに対してTextFieldを用いて個別でメモが出来る。というものです。 現状はご認識の通りエラーもなく動きはするのですが、リアルタイムで表示がされない状態です。知見があればご教授頂きたいです。
hoshi-takanori

2021/08/17 09:15

リアルタイムで表示がされない状態というのがよく分かりませんが、現状はリスト上で編集できて、編集じゃない項目は編集したまま残ってるのではないでしょうか。 (自分が想像する「その先」は、画面遷移して戻ってきたときにもちゃんとリストが保持されるとか、リストをどこかに保存してアプリを立ち上げ直したら保存した内容を読み込んで表示できるとかです。)
guest

回答1

0

自己解決

別の質問を立ち上げさせて頂き、そちらで解決しました。
https://teratail.com/questions/356730)

投稿2021/09/05 05:43

Jene

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問