找不到 CarouselViewModel 类型的 ObservableObject.CarouselViewModel 的 View.environmentObject(_:) 可能缺少作为此视图的祖先 [英] No ObservableObject of type CarouselViewModel found. A View.environmentObject(_:) for CarouselViewModel may be missing as an ancestor of this view
问题描述
我正在尝试制作卡片并在其中打印一个数据库,但出现错误致命错误:未找到 CarouselViewModel 类型的 ObservableObject.CarouselViewModel 的 View.environmentObject(_:) 可能缺少作为此视图的祖先."这是代码:
I am trying to make a card and print a DataBase inside but I get an error "Fatal error: No ObservableObject of type CarouselViewModel found. A View.environmentObject(_:) for CarouselViewModel may be missing as an ancestor of this view." here is the code:
结构开始出错:
struct Home: View {
@EnvironmentObject var model: CarouselViewModel
@ObservedObject private var viewModel = NewsViewModel()
@State private var isModalOpen: Bool = false
@Namespace var animation
var body: some View {
有错误的代码:
ZStack{
ForEach(model.cards.indices.reversed(),id: \.self){index in
HStack {
CardView(card: model.cards[index], animation: animation)
.frame(width: getCardWidth(index: index), height: getCardHeight(index: index))
.offset(x: getCardOffset(index: index))
.rotationEffect(.init(degrees: getCardRotation(index: index)))
Spacer(minLength: 0)
}
.frame(height: 400)
.contentShape(Rectangle())
.offset(x: model.cards[index].offset)
.gesture(DragGesture(minimumDistance: 0)
.onChanged({ (value) in
onChanged(value: value, index: index)
}).onEnded({ (value) in
onEnd(value: value, index: index)
}))
}
}
.padding(.top,25)
.padding(.horizontal,30)
```
Thanks for help
推荐答案
无论您在何处实例化 Home
视图,都必须添加一个传递实例的 .environmentObject
修饰符CarouselViewModel
到它.
Wherever you instantiate the Home
view, you have to add an .environmentObject
modifier that passes an instance of CarouselViewModel
to it.
我不知道你的确切代码是什么样的(或者 CarouselViewModel
将什么作为参数),但它看起来像:
I don't know what your exact code looks like (or what CarouselViewModel
takes as parameters), but it'll look something like:
//somewhere in the parent view:
@StateObject private var model = CarouselViewModel() //if iOS 13, use @ObservedObject
//where you instantiate `Home`:
Home().environmentObject(model)
请注意,如果您尝试在 SwiftUI 预览版中使用 Home
并且它没有此 .environmentObject
,则这也会是一个错误> 代码.
Note that this will also be an error if you try to use Home
in a SwiftUI Preview and it doesn't have this .environmentObject
code.
这篇关于找不到 CarouselViewModel 类型的 ObservableObject.CarouselViewModel 的 View.environmentObject(_:) 可能缺少作为此视图的祖先的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!