首页 > 解决方案 > 在 SwiftUI 中按下按钮时更改视图

问题描述

当我按下 SwiftUI 中的按钮时,我想更改视图。

ZStack {
    Button(action: {
        Settings(logOutAfter24H: true, emailAddress: "example@example.com")
        print("Button pressed")
    }) {
        ZStack {
            RoundedRectangle(cornerRadius: 10)
                .frame(width: 125, height: 150).foregroundColor(Color.CGreen)
            HStack {
                Image(systemName: "gear")
                Text("Settings").foregroundColor(Color.black)
            }
        }
    }
}

我想切换到Settings视图。

标签: swiftswiftui

解决方案


如果您只想将当前视图替换为 SettingsView,您可以尝试:

struct ContentView: View {
    @State var showSettingsView = false

    var body: some View {
        ZStack {
            if showSettingsView {
                Settings(...)
            } else {
                settingsButton
            }
        }
    }
    
    var settingsButton: some View {
        Button(action: {
            self.showSettingsView = true
            print("Button pressed")
        }) {
            ZStack {
                RoundedRectangle(cornerRadius: 10)
                    .frame(width: 125, height: 150).foregroundColor(.green)
                HStack {
                    Image(systemName: "gear")
                    Text("Settings").foregroundColor(Color.black)
                }
            }
        }
    }
}

通过设置的值showSettingsView你可以决定是显示还是隐藏SettingsView。

或者,您可以使用 aNavigationLink在导航堆栈上推送新视图或使用 asheet以模态方式呈现视图:

struct ContentView: View {
    @State var showSettingsView = false

    var body: some View {
        ZStack {
            settingsButton
        }
        .sheet(isPresented: $showSettingsView) {
            Settings(...)
        }
    }
    ...
}

推荐阅读