【发布时间】:2020-10-28 11:42:39
【问题描述】:
我的视图中声明了一个状态
@State var selected: Bool = false
@State var selectedPerson: Person
当从视图中选择“Person”时,会有一个回调将“selected”状态设置为 true,并设置被选中的人:
MapView(viewModel: MapViewModel(people: viewModel.people)) { value in
selectedPerson = viewModel.getPersonWith(name: value.title)
selected = true
}
当所有这些都设置好后,它会触发这样的 NavigationLink:
NavigationLink(destination: PersonDetailsView(viewModel: PersonViewModel(person: selectedPerson)), isActive: self.$selected) {
EmptyView()
}.hidden()
一切正常,但我必须在初始化结构之前将默认值设置为“selectedPerson”状态,即使没有选择任何人。有没有办法绕过这个,而不给“selectedPerson”状态一个默认的“虚拟”值。 谢谢:)
【问题讨论】:
-
只需将其设为可选
@State var selectedPerson: Person?并使用其他 NavigationLink 初始化程序,该初始化程序将绑定到可选值。您也可以删除。完全选中 -
@LuLuGaGa 你能给我举个例子吗,应用程序崩溃了,因为它从可选项接收到一个 nil 值