当目标的必需参数来自可选状态变量时导航链接



使用可选状态参数导航真的让我很困惑。下面的代码不会编译,因为selectedObject必须是nil合并的,因为它是NextView所必需的,但我没有什么可以合并的。NextView需要这个参数,所以一个可选的不编译。MyObject是一个具有所有必需属性的结构,所以我没有空的构造函数。我使用selected状态来管理导航何时发生,但由于有可选对象,它仍然无法编译。

struct MyView: View {
@EnvironmentObject var model: Model
@State var selected = false
@State var selectedObject: MyObject? // optional because there isn't one until it's set by the child view
var body: some View {
NavigationLink(destination: NextView(object: $selectedObject), isActive: self.$selected) {
EmptyView()
}
// ... child view that when interacted with sets the selectedObject as a binding ... //
}
}
struct MyObject: Identifiable, Codable {
var property1: String
var property2: String
// .... many more ...
}
struct NextView: View {
@Binding var object: MyObject // required binding

var body: some View {
Text("some stuff about my object")
}
}

如果您确实知道selectedObject将在链接激活时出现,那么您可以通过即时创建的绑定(如(来解决这种情况

NavigationLink(destination: NextView(object:
Binding(
get: {selectedObject!},
set: {selectedObject = $0}
)), isActive: self.$selected) { EmptyView()
}

最新更新