[英]NavigationLink when destination's required parameter is from optional state variable
使用可选的 state 参数导航真的让我很难过。 下面的代码将无法编译,因为selectedObject
必须 nil 合并,因为NextView
需要它,但我没有任何东西可以合并它。 NextView
需要这个参数,所以一个可选项不能编译。 MyObject
是具有所有必需属性的结构,因此我没有空构造函数。 我正在使用selected
的 state 来管理导航发生的时间,但由于可选的 object,它仍然无法编译。
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()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.