是否有一种方法可以基于SwiftUI中的环境变量来更改视图?

问题描述 投票:0回答:1

我希望能够通过单击按钮在SwiftUI中更改视图。我有如下按钮设置来切换环境变量,如下所示

struct SettingsButton: View {

    @EnvironmentObject var settings: UserSettings

    var body: some View {
        VStack {
            Button(action: { self.settings.settingsView.toggle() }) {
                Image(systemName: "gear")
                    .font(Font.system(size: 25))
                    .frame(width: 25, height: 25)
                    .foregroundColor(.primary)
                    }
                }
                .offset(x: 180, y: -372)}
        }

我也在这里声明了Observable对象

import Foundation
import GoogleSignIn

class UserSettings: ObservableObject {
    @Published var studentID = ""
    @Published var givenName = ""
    @Published var settingsView = false
    @Published var profileView = false
    @Published var isLogged = GIDSignIn.sharedInstance()?.currentUser
}

最后,我在视图中有一个ViewBuilder设置,该设置是在开始时加载的,以侦听变量中的更改并相应地切换视图,但是在加载应用程序并轻按按钮时,应用程序冻结并且保持无响应。] >

struct Login: View {

    @EnvironmentObject var settings: UserSettings

    @ViewBuilder var body : some View {

        if settings.isLogged != nil {
            MainView()
        }
        else {
            LoginPage()
        }
        if settings.settingsView {
            SettingsView()
        }

    }
}

我想知道是否有任何已知的方法可以尝试不使用.sheet或导航链接的任何帮助,非常感谢!

我希望能够通过单击按钮在SwiftUI中更改视图。我有如下按钮设置来切换环境变量,如下所示:struct SettingsButton:View {@EnvironmentObject var ...

swift view environment-variables swiftui
1个回答
0
投票

[没有看到您的MainView(), LoginPage() and SettingsView(),我认为您应该在Login()视图中执行以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.