我有这个简单的例子:
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))")
}
}
}
当选择列表中的项目时,我试图选择适当的模型。然而,这个例子中的选择并没有像我预期的那样发挥作用。
如果我将选择更改为 use UUID
,则该选择有效。但是,当选择列表中的项目时,我需要获取相应的模型对象。
我究竟做错了什么?
尝试使用
.tag(message)
,对我有用