6

配列を手動で参照せずに、@Binding 主導のコントロールを使用して動的リストを作成するにはどうすればよいですか? 当たり前のように思えますが、List または ForEach を使用して配列を反復処理すると、あらゆる種類の奇妙なエラーが発生します。

struct OrderItem : Identifiable {
    let id = UUID()
    var label : String
    var value : Bool = false
}

struct ContentView: View {
    @State var items = [OrderItem(label: "Shirts"),
                        OrderItem(label: "Pants"),
                        OrderItem(label: "Socks")]
    var body: some View {
        NavigationView {
            Form {
                Section {
                    List {
                        Toggle(items[0].label, isOn: $items[0].value)
                        Toggle(items[1].label, isOn: $items[1].value)
                        Toggle(items[2].label, isOn: $items[2].value)
                    }
                }
            }.navigationBarTitle("Clothing")
        }
    }
}

これは機能しません:

            ...
                Section {
                    List($items, id: \.id) { item in
                        Toggle(item.label, isOn: item.value)
                    }
                }
            ...

タイプ '_' にはメンバー 'id' がありません

次のようなこともありません。

            ...
                Section {
                    List($items) { item in
                        Toggle(item.label, isOn: item.value)
                    }
                }
            ...

汎用パラメーター 'SelectionValue' を推測できませんでした

4

2 に答える 2