呈现工作表时 EnvironmentObject 不起作用
Posted
技术标签:
【中文标题】呈现工作表时 EnvironmentObject 不起作用【英文标题】:EnvironmentObject does not work when sheet is presented 【发布时间】:2019-11-30 04:58:09 【问题描述】:我有一个包含 managedObjectContext(环境变量)的视图。当使用 NavigationLink 在 NavigationView 中呈现时,它可以正常工作。但是当视图显示为工作表时,它不起作用。 当我保存一些实体数据时,它给了我一个错误。
“操作无法完成。(Foundation._GenericObjCError 错误 0.)”
使用 Environment 对象时有什么我遗漏的吗?我的代码
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
@Environment(\.managedObjectContext) var managedObjectContext
【问题讨论】:
【参考方案1】:工作表不是ContentView
的子组件。
因此,您必须将此环境单独传递给工作表:
.sheet(isPresented: self.$isPresented, content: MySheetView().environment(\.self.moc)
moc
在 View 中定义为:
@Environment(\.managedObjectContext) var moc
【讨论】:
以上是关于呈现工作表时 EnvironmentObject 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
@EnvironmentObject 符合协议:Xcode 未编译
对 SwiftUI 中的 @EnvironmentObject 感到困惑
使用 SwiftUI 时尝试在视图中显示工作表时应用程序崩溃
将数据从委托 Swift 类传递到 SwiftUI 结构中的 EnvironmentObject