首先,我对 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()
}
}
'''