找不到类型为 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(_:) 可能会丢失,因为这种观点的始祖。”这是代码:
错误的结构开始:
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
的实例传递给它。
我不知道您的确切代码是什么样的(或者 CarouselViewModel
将什么作为参数),但它看起来像:
//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
代码,这将 也 是一个错误.
我正在尝试制作一张卡片并在其中打印一个数据库,但我收到错误“致命错误:未找到 CarouselViewModel 类型的 ObservableObject。CarouselViewModel 的 View.environmentObject(_:) 可能会丢失,因为这种观点的始祖。”这是代码:
错误的结构开始:
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
的实例传递给它。
我不知道您的确切代码是什么样的(或者 CarouselViewModel
将什么作为参数),但它看起来像:
//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
代码,这将 也 是一个错误.