代码之家  ›  专栏  ›  技术社区  ›  Whirlwind

当选择为可选自定义类型时,列表选择不起作用

  •  0
  • Whirlwind  · 技术社区  · 2 年前

    我有一个简单的例子:

    struct Message: Identifiable, Hashable {
        let id = UUID()
        let content: String
    }
    
    struct ContentView: View {
        @State private var selection: Message?
        @State private var messages: [Message] = [
            Message(content: "Hello"),
            Message(content: "World")
        ]
    
        var body: some View {
            NavigationStack {
                List(selection: $selection) {
                    ForEach(messages) { message in
                        Text(message.content)
                            .tag(message as Message?)
                    }
                }
                .navigationTitle("List")
               
            }.onChange(of: selection) { oldValue, newValue in
                print("Old value \(String(describing: oldValue))")
                print("New value \(String(describing: newValue))")
            }
        }
    }
    

    当列表中的项目被选中时,我正在尝试选择合适的型号。然而,本例中的选择并没有如我所期望的那样发挥作用。

    如果我将选择更改为使用 UUID ,选择有效。但是,当列表中的一个项目被选中时,我需要获取相应的模型对象。

    我做错了什么?

    1 回复  |  直到 2 年前
        1
  •  1
  •   workingdog support Ukraine    2 年前

    尝试使用 .tag(message) ,为我工作