繁体   English   中英

当目的地的必需参数来自可选 state 变量时的 NavigationLink

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM