- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 SwiftUI 创建了一个应用程序,当我尝试显示按钮时,会出现此错误消息:
Thread 1: Fatal error: No ObservableObject of type ModelData found. A View.environmentObject(_:) for ModelData may be missing as an ancestor of this view.
当我在尝试显示应用程序的 View 之一时尝试使用 @EnvironmentObject
时,就会发生这种情况。
我的代码是
struct OpportunityDetail: View {
@EnvironmentObject var modelData: ModelData
var opportunity: Opportunity
var opportunityIndex: Int {
modelData.opportunities.firstIndex(where: { $0.id == opportunity.id })!
}
var body: some View {
ScrollView {
MapView(coordinate: opportunity.locationCoordinate)
.frame(height: 300)
.ignoresSafeArea(edges: .top)
CircleImage(opportunity: opportunity)
.offset(y: -130)
.padding(.bottom, -130)
VStack {
VStack(alignment: .leading) {
Text(opportunity.position)
.font(.title)
HStack {
Text(opportunity.name)
.font(.subheadline)
Spacer()
Text(opportunity.city)
.font(.subheadline)
}
.font(.subheadline)
.foregroundColor(.secondary)
Divider()
Text("About the Opportunity")
.font(.title2)
Text(opportunity.description)
ApplyButton(isSet: $modelData.opportunities[opportunityIndex].isApplied)
}
.padding()
}
}
.navigationTitle(opportunity.name)
.navigationBarTitleDisplayMode(.inline)
}
}
但是, View 的预览和实时预览工作正常
struct OpportunityDetail_Previews: PreviewProvider {
static let modelData = ModelData()
static var previews: some View {
OpportunityDetail(opportunity: modelData.opportunities[0])
.environmentObject(modelData)
}
}
我知道我必须将环境对象传递到某个地方,但不知道如何传递。我将非常感谢任何人的帮助。
最佳答案
通过将 .environmentObject(modelData)
放入 ContentView
中解决了我的问题,因为正如 New Dev 所说,它是我所有 subview 的 Root View :
您必须使用 .environmentObject(modelData),就像在 View 层次结构中的某个位置进行预览一样。例如,OpportunityDetail 的父 View 可以执行此操作,或者您可以在根级别创建它。例如,如果 ContentView 是您的 Root View ,您可以将其设置在那里。
关于SwiftUI -> 线程 1 : Fatal error: No ObservableObject of type ModelData found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66415966/
我有以下简单的 QML 组合框: import QtQuick 2.0 import QtQuick.Controls 1.4 import si.mikroelektronika 1.0 Item
我正在尝试在 Android(版本 4)上部署我的应用程序,但我在模型中遇到委托(delegate)问题 - ReferenceError: modelData is not defined。 我的代
这似乎是与此处相同(未回答)的问题:QML Combobox reports ReferenceError: modelData is not defined .我能找到的 QT 数据库中最接近(已关
我正在做一个项目,我有三个 ViewModel: ObjectDetailsViewMode 有一个 ObjectBase 类型的上下文(属性链接到模型); PropertyTextViewModel
我使用 SwiftUI 创建了一个应用程序,当我尝试显示按钮时,会出现此错误消息: Thread 1: Fatal error: No ObservableObject of type ModelDa
我是一名优秀的程序员,十分优秀!