Bellow is a simplification of my code, where the FDocument is a
class FDocument: NSObject, ObservableObject, Codable
When i hit the button, the document is assigned proper with a new instance and isDocumentPresented is changed, however in the
.fullScreenCover(isPresented: $isDocumentPresented)
the document is suddenly nil
struct MyView: View {
@State var document: FDocument?
@State var isDocumentPresented = false
var body: some View {
List {
Button("New") {
document = FDocument()
isDocumentPresented = true
}
}
.listStyle(.insetGrouped)
.fullScreenCover(isPresented: $isDocumentPresented) {
DocumentEditor(document: document!) // <- NIL HERE
}
}
}
>Solution :
Use variant with item instead, like
Button("New") {
document = FDocument()
// isDocumentPresented = true // << not needed !!
}
}
.listStyle(.insetGrouped)
.fullScreenCover(item: $document) { item in // << valid !!
DocumentEditor(document: item) // << here !!
}