我正在开发一个应用程序,在访客屏幕中,我为 register
和 login
创建了 2 个按钮
按钮定义为:
Button( action: {
RegisterLoginView(isLoginScreen: false)
}){
MyButtonView(stringOfButton: register, isDarkButton: true)
.padding(.leading, 10)
}
首先,Xcode 抱怨 Result of 'RegisterLoginView' initializer is unused
但我最担心的是当我按下按钮时,我以为 RegisterLoginView
会被打开,但什么也没发生。有什么想法吗?
访客视图:
var body: some View {
VStack {
TabView {
GuestFlowImageTab(title: title1,
desc: desc1,
image: "houseprice")
GuestFlowImageTab(title: title2,
desc: desc2,
image: "invest")
GuestFlowFormTab()
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
HStack {
Button( action: {
RegisterLoginView(isLoginScreen: false)
}){
MyButtonView(stringOfButton: register, isDarkButton: true)
.padding(.leading, 10)
}
Button( action: {
RegisterLoginView(isLoginScreen: true)
}){
MyButtonView(stringOfButton: login, isDarkButton: false)
.padding(.trailing, 10)
}
}
}
和 RegisterLoginView
定义如下:
struct RegisterLoginView: View {
let titleTxt = "My Realtor"
let emailTxt = "Email"
let passwordTxt = "Password"
let nameTxt = "Name"
let loginBtn = "Sign In"
let registerBtn = "Sign Up"
@State var isLoginScreen: Bool
@State private var name = ""
@State private var email = ""
@State private var password = ""
var body: some View {
VStack() {
Text(titleTxt)
Image("iconhouseorange")
if(isLoginScreen) { TextField(nameTxt, text: self.$name) }
TextField(emailTxt, text: self.$email)
TextField(passwordTxt, text: self.$password)
Button(isLoginScreen ? loginBtn : registerBtn) {}
}
}
}
struct RegisterLoginView_Previews: PreviewProvider {
static var previews: some View {
RegisterLoginView(isLoginScreen: true)
}
}
感谢您的帮助
答案 0 :(得分:0)
您应该使用 NavigationLink
而不是用于重定向的按钮。
NavigationLink(destination: RegisterLoginView(isLoginScreen: false)) {
MyButtonView(stringOfButton: register, isDarkButton: true)
.padding(.leading, 10)
}
此外,如果您的父视图(来宾视图)不在导航视图下,则使用导航视图包装您的视图。
访客视图
var body: some View {
NavigationView {
VStack {
// --- Other code ----
}
}
}