首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI @EnvironmentObject对象:找不到?

SwiftUI @EnvironmentObject对象:找不到?
EN

Stack Overflow用户
提问于 2021-01-03 00:06:57
回答 1查看 153关注 0票数 0

我有一个结构,我想把它转换成一个EnvironmentObject,这样我就可以把它传递给子结构,但是当我这样做的时候,它会因为MissingEnvironmentObjectError: Missing EnvironmentObject而崩溃。我的结构看起来像这样:

代码语言:javascript
复制
class event: ObservableObject {
    @Published var Name: String
    @Published var CalendarID: Int
    var timeStart: Date
    var timeEnd: Date
    var checklist = [checklistObject]()
    
    init(_ eventName: String, _ calID: Int, _ timeStart: Date, _ timeEnd: Date) {
        Name = eventName
        CalendarID = calID
        self.timeStart = timeStart
        self.timeEnd = timeEnd
        logger.log("Successfully created new event")
    }
    
    func newChecklistItem(Content: String){
        checklist.append(checklistObject(Content, false))
    }
    
    func getChecklistSize() -> Int {
        return checklist.count
    }
}

我的程序看起来像这样:

代码语言:javascript
复制
import SwiftUI

struct checklistDisplayRow: View {
    @EnvironmentObject var Event: event
    var itemID: Int
    
    init(itemID: Int){
        self.itemID = itemID
        Event.newChecklistItem(Content: "Stuff")
    }
    
    var body: some View {
        HStack{
            Toggle("", isOn: $Event.checklist[itemID].complete)
            Text("hi")
        }
    }
}

struct checklistDisplayRow_Previews: PreviewProvider {
    static var previews: some View {
        checklistDisplayRow(itemID: 0)
            .environmentObject(event("Title", 1, Date(timeIntervalSince1970: 1576800000), Date(timeIntervalSince1970: 1576800060)))
    }
}

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-01-03 18:18:18

此时,您正在为预览设置环境对象,但您还需要在使用checklistDisplayRow的层次结构中设置它。

例如,如果您在VStack中使用一些checklistDisplayRow(对于事件检查表中的项),您可以这样做:

代码语言:javascript
复制
VStack {
    ForEach(checklist, id: \.id) { item in
        checklistDisplayRow(itemID: item.id)
    }
}.environmentObject(
    event("Title", 1, Date(timeIntervalSince1970: 1576800000), Date(timeIntervalSince1970: 1576800060)
)

我希望这对你有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65541221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档