我希望能够通过单击按钮在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 ...
[没有看到您的MainView(), LoginPage() and SettingsView()
,我认为您应该在Login()
视图中执行以下操作: