单击按钮未打开视图

时间:2021-05-27 06:26:30

标签: ios swift iphone swiftui

我正在开发一个应用程序,在访客屏幕中,我为 registerlogin 创建了 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)
    }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您应该使用 NavigationLink 而不是用于重定向的按钮。

NavigationLink(destination: RegisterLoginView(isLoginScreen: false)) {
    MyButtonView(stringOfButton: register, isDarkButton: true)
        .padding(.leading, 10)
}

此外,如果您的父视图(来宾视图)不在导航视图下,则使用导航视图包装您的视图。

访客视图

var body: some View {
    NavigationView {
        VStack {
         // --- Other code ----
        }
    }
}