pil*_*man 3 xcode ios swift swiftui
首先,我对 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()
};
}
Run Code Online (Sandbox Code Playgroud)
'''
下面是内容视图,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()
}
}
Run Code Online (Sandbox Code Playgroud)
'''
dav*_*dev 11
您可以在 ContentView 中有一个状态,它决定您的用户是否登录。
struct ContentView: View {
@State var isLoggedIn: Bool = false
var body: some View {
if !isLoggedIn {
LoginView(isLoggedIn: $isLoggedIn)
} else {
MainContentView()
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在日志记录视图中添加一个绑定,当用户成功登录时,更改该绑定。
struct LoginView: View {
@State private var email: String = ""
@State private var password: String = ""
let verticalPaddingForForm = 40
@Binding var isLoggedIn: Bool // here is the Binding
Run Code Online (Sandbox Code Playgroud)
然后在操作中,切换绑定
Button(action: {
//Do login stuff here and if true switch view to to MainContentView
isLoggedIn = true
Run Code Online (Sandbox Code Playgroud)
您还可以考虑使用某种导航模式并推送到下一个视图。
上面的代码没有经过测试,只是我的想法
| 归档时间: |
|
| 查看次数: |
4508 次 |
| 最近记录: |