我有一个简单的例子:
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
,选择有效。但是,当列表中的一个项目被选中时,我需要获取相应的模型对象。
我做错了什么?