单击按钮转到 swiftui 中的另一个页面

Ena*_*que 1 swiftui swiftui-navigationview

我有两个视图,一个是LoginView。另一个是WelcomeView。我想从登录视图单击按钮从登录视图转到欢迎视图。

这是我的代码..

  1. 登录查看

    struct LoginView: View {
    
     var body: some View {
       VStack{
        Button(action: {
            print("*** Press go login view ****")
    
        }) {
            Text("Login")
                .font(.custom(TextConstant.keyValues.front_name, size: 30))
                .foregroundColor(.white)
                .fontWeight(.bold)
                .frame(minWidth: 0, maxWidth: .infinity)
                .padding(.all,20)
                .foregroundColor(.blue)
                .background(LinearGradient(gradient: Gradient(colors: [.green, .green]), startPoint: .leading, endPoint: .trailing))
                .cornerRadius(10)
          }
         }
       }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这里是欢迎查看

     struct WelcomeView: View {
       var body: some View {
        Text("Hello ")
       }
      }
    
    Run Code Online (Sandbox Code Playgroud)

我想转到 clcik 按钮上的另一页并返回到上一个 onclick 按钮。请帮忙。

wor*_*dog 5

您可以尝试通过单击按钮从LoginView转到:WelcomeViewLoginView

\n
struct LoginView: View {\n    @State private var showWelcomeView = false\n    \n    var body: some View {\n        NavigationView {\n            VStack {\n                Button(action: { showWelcomeView = true }) {\n                    Text("Login")\n                        .font(.custom(TextConstant.keyValues.front_name, size: 30))\n                        .foregroundColor(.white)\n                        .fontWeight(.bold)\n                        .frame(minWidth: 0, maxWidth: .infinity)\n                        .padding(.all,20)\n                        .foregroundColor(.blue)\n                        .background(LinearGradient(gradient: Gradient(colors: [.green, .green]), startPoint: .leading, endPoint: .trailing))\n                        .cornerRadius(10)\n                }\n                NavigationLink("", destination:  WelcomeView(), isActive: $showWelcomeView)\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编辑1:

\n

NavigationViewiOS 13.0\xe2\x80\x9317.2 已弃用。

\n

使用NavigationStack.navigationDestination(...),例如:

\n
 struct LoginView: View {\n     @State private var showWelcomeView = false\n     \n     var body: some View {\n         NavigationStack {\n             VStack {\n                 Button(action: { showWelcomeView = true }) {\n                     Text("Login")\n                         .foregroundColor(.white)\n                         .fontWeight(.bold)\n                         .frame(minWidth: 0, maxWidth: .infinity)\n                         .padding(.all,20)\n                         .foregroundColor(.blue)\n                         .background(LinearGradient(gradient: Gradient(colors: [.green, .green]), startPoint: .leading, endPoint: .trailing))\n                         .cornerRadius(10)\n                 }\n             }\n             .navigationDestination(isPresented: $showWelcomeView) {\n                 WelcomeView()\n             }\n         }\n     }\n }\n \n
Run Code Online (Sandbox Code Playgroud)\n