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
。
我正在使用 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
。