使用可選的狀態引數進行導航真的讓我很難過。下面的代碼將無法編譯,因為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")
}
}
uj5u.com熱心網友回復:
如果您確定知道selectedObject會在鏈接激活時出現,那么您可以解決這種情況,傳遞即時創建的系結,例如
NavigationLink(destination: NextView(object:
Binding(
get: {selectedObject!},
set: {selectedObject = $0}
)), isActive: self.$selected) { EmptyView()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375490.html
