SwiftUI -> Thread 1: Fatal error: No observable object of type MyObject.Type found (EnvironmentObject in sheet)

SwiftUI -> Thread 1: Fatal error: No observable object of type MyObject.Type found (EnvironmentObject in sheet)

我正在使用 SwiftUI 构建应用程序。当我尝试显示 sheet(以前的模态)时,出现此错误消息:

Thread 1: Fatal error: No observable object of type BixiStationCombinedListViewModel.Type found.
A View.environmentObject(_:) for BixiStationCombinedListViewModel.Type may be missing as an ancestor of this view.

当我使用 @State 变量显示包含 Map View 使用 MapKit 的模式时,会发生此错误。

我不明白为什么以及如何实施新的 Environment Object

是不是因为Station我select点击CardView应该全局存储,信息应该传递给专用View

View处理@State

struct CardView: View {
    
    @EnvironmentObject var bixiModel: BixiStationCombinedListViewModel
    @State private var isModalOpen: Bool = false
        
    var station: BixiStationCombinedViewModel
        
    var body: some View {
        
        ZStack(alignment: .leading) {
            
                Card()
                
                StationTextInfo(station: station)

        } .onTapGesture {
            self.isModalOpen = true
            print(self.isModalOpen)
        }
        .sheet(isPresented: self.$isModalOpen) {
            BixiStationDetailView(station: self.station)
        }

    }
}

我试图在 sheet:

中显示的 View
struct BixiStationDetailView: View {
    
    @EnvironmentObject var bixiModel: BixiStationCombinedListViewModel
        
    var station: BixiStationCombinedViewModel
    
    var body: some View {
        VStack {
            MapView(coordinate: station.coordinate, name: station.name)        
        }
    }
}

最后对象:

class BixiStationCombinedListViewModel: ObservableObject {
    
    init() {
        fetchDataFromApi()
    }
    
    @Published var stationsCombinedList = [BixiStationCombinedViewModel]()
    
    var stationsInformationList = [BixiStationInformationViewModel]()
    var stationsDataList = [BixiStationDataViewModel]()
        
    func fetchDataFromApi() {

        }        
    }
}

如何摆脱错误消息并显示正确的 View

您必须将您的环境对象传递给 BixiStationDetailView,否则它将没有任何东西可以绑定到它的 @EnvironmentObject

.sheet(isPresented: self.$isModalOpen) {
    BixiStationDetailView(station: self.station)
        .environmentObject(self.bixiModel)
}

由于您将 BixiStationDetailView 显示为 sheet,它不是 CardView 的子视图,因此不会继承其 @EnvironmentObject