根据位置更改 TabView 中的选项卡?

问题描述 投票:0回答:1
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")
        }
    }
swift swiftui
1个回答
0
投票

你可以尝试这样的事情:

@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
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.