init() {
let defaults = UserDefaults.standard
self.state = defaults.object(forKey: "State") as? String ?? ""
self.county = defaults.object(forKey: "County") as? String ?? ""
self.postalCode = defaults.object(forKey: "PostalCode") as? String ?? ""
self.locality = defaults.object(forKey: "Locality") as? String ?? ""
}
TabView 内部{...
if(state == "NJ") {
AboutView()
.tabItem {
Label("About", systemImage: "info.circle")
}
} else {
ConnectView()
.tabItem {
Label("Connect", systemImage: "person.2")
}
}
即使我知道模拟位置是“NJ”,UI 始终显示 else 条件
在@main 的课堂上
@main
struct MyApp: App {
@StateObject var locationCoordinator = LocationCoordinator()
init() {
locationCoordinator.locationUpdated = { state, county, postalCode, locality in
let defaults = UserDefaults.standard
defaults.set(state, forKey: "State")
defaults.set(county, forKey: "County")
defaults.set(postalCode, forKey: "PostalCode")
defaults.set(locality, forKey: "Locality")
}
}
你可以尝试这样的事情:
@main
struct MyApp: App {
@StateObject var locationCoordinator = LocationCoordinator()
@AppStorage("State") var state = ""
var body: some Scene {
WindowGroup {
ContentView(state: state)
}
.onChange(of: locationCoordinator.state) {
self.state = locationCoordinator.state
}
}