iOS:如何将视图从登录切换到主要内容 SwiftUi

2024-06-25

首先,我对 iOS 开发和 Swift 非常陌生(从 PHP 来到这里已经两周了:))

我正在构建一个简单的应用程序,当用户登录(已确认)时,视图切换到主要内容。

所以目前我有一个 LoginView(),这是首先加载的。我想知道当我单击 LoginView() 中的登录按钮时,视图如何切换到 MainContentView()

任何帮助,将不胜感激。谢谢

登录视图() '''

import SwiftUI

struct LoginView: View {
    @State private var email: String = ""
    @State private var password: String = ""
    let verticalPaddingForForm = 40
    @State private var willMoveToNextScreen = true

    
    var body: some View {
        
        ZStack {
            Color(red: 20/225.0 ,green: 22/225.0 , blue: 25/225.0)
            
            VStack(alignment: .leading, spacing: 0) {
                Image("logo")
                    .resizable()
                    .scaledToFit()
                    .padding(.top, 150)
                    .padding()
            }
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
            .ignoresSafeArea(.all)
            
            VStack(spacing: CGFloat(verticalPaddingForForm)) {
                                
                VStack {
                        TextField("Email", text: $email)
                            .padding(.horizontal, 15).padding(.top, 50)
                        Divider()
                            .padding(.horizontal, 15)
                        SecureField("Password", text: $password)
                            .padding(.horizontal, 15).padding(.top, 20)
                        Divider()
                            .padding(.horizontal, 15)

                }
                .background(Color(.white))
                
                
                Link("Forgotten Password",
                      destination: URL(string: "https://www.google.co.uk")!)
                    .foregroundColor(.blue)
                    .font(.system(size: 15))
                
                
                Button(action: {
                    
                    //Do login stuff here and if true switch view to to MainContentView
                    
                    
                }) {
                    Text("Login")
                        .padding()
                        .font(.system(size: 20))
                    
                }
                .background(Color.black)
                .foregroundColor(Color.white)
                .cornerRadius(10)
                .padding(.top, 0)
                .padding(.bottom, 20)
                
            }
            .padding(.horizontal, CGFloat(verticalPaddingForForm))
            .background(Color(.white))
            
            VStack{
                Spacer()
                Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
                    Text("Register")
                        .padding()
                        .font(.system(size: 40))

                    
                }
                .background(Color(red: 20/225.0 ,green: 22/225.0 , blue: 25/225.0))
                .foregroundColor(Color.white)
                .cornerRadius(10)
                .padding()
            }
        }.ignoresSafeArea()
        

    };
}

'''

下面是内容视图,LoginView 首先加载,当从上面单击登录按钮时,应该切换到下面注释掉的 MainContentView()

内容查看: '''

import SwiftUI


struct ContentView: View {

    var body: some View {
        LoginView()
        
        //After login is confirmed in the login view, then switch from
        // LoginView to
        //MainContentView()
        
        
    }
    
}

'''


您可以在内容视图中有一个状态,它决定您的用户是否登录。

struct ContentView: View {
    @State var isLoggedIn: Bool = false

    var body: some View {
        if !isLoggedIn {
            LoginView(isLoggedIn: $isLoggedIn)
        } else {
            MainContentView()
        }
    }    
}

然后在日志记录视图中添加一个绑定,当用户成功登录时,更改该绑定。

struct LoginView: View {
    @State private var email: String = ""
    @State private var password: String = ""
    let verticalPaddingForForm = 40 
    @Binding var isLoggedIn: Bool // here is the Binding

然后在操作中,切换绑定

Button(action: {        
    //Do login stuff here and if true switch view to to MainContentView
    isLoggedIn = true            

您还可以考虑使用某种导航模式并推送到下一个视图。

上面的代码没有经过测试,只是我的想法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS:如何将视图从登录切换到主要内容 SwiftUi 的相关文章

随机推荐