找不到 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

查看:43
本文介绍了找不到 CarouselViewModel 类型的 ObservableObject.CarouselViewModel 的 View.environmentObject(_:) 可能缺少作为此视图的祖先的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作卡片并在其中打印一个数据库,但出现错误致命错误:未找到 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆