I am trying to create a crime tracking app, but right now I am struggling to create structs for different tabs of my app using NavigationManager and screens. However when I made a new struct and tried to use my NavigationManager, it displayed this error message:
2022-10-26 02:18:45.468441-0400 TextFieldAndSecureFieldInSwiftUI[50866:2496084] SwiftUI/EnvironmentObject.swift:70: Fatal error: No ObservableObject of type StatsNavigationManager found. A View.environmentObject(_:) for StatsNavigationManager may be missing as an ancestor of this view.
This is the code for my StatsNavigationManager object and my tab.
final class StatsNavigationManager: ObservableObject {
@Published var screen: Screens? {
didSet {
print(" \(String(describing: screen))")
}
}
func push(to screen: Screens) {
self.screen = screen
}
func popToRoot() {
self.screen = nil
}
}
struct StatsView: View {
let test = cityClass()
struct Input{
var zip: String = ""
}
@State private var input: Input = .init()
@FocusState private var inputFocused: Bool
@EnvironmentObject var statNavManager: StatsNavigationManager//I define the var I am struggling with here
//I also tried these approaches but each gave me an error
//weak var statNavManager : StatsNavigationManager?
//@State var statNavManager : StatsNavigationManager
var body: some View {
NavigationView {
ZStack {
Color.blue
VStack {
inputTxtVw
submitBtn
}
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Spacer()
Text("Search")
Button("Retrieve Data") {
statNavManager.push(to: .statsPage)
}
.background(
NavigationLink(destination: CityView(),
tag: .statsPage,
selection: $statNavManager.screen) { EmptyView() }//the "$statNavManager.screen" gives me the error and reads No ObservableObject of type StatsNavigationManager found when I hover
)
}
}
.onSubmit(of: .text, submit)
}
}
.environmentObject(self.statNavManager)
//also tried StatsNavigationManager.environmentObject(statNavManager)
}
}
}