簡體   English   中英

如何在SwiftUI中通過單擊按鈕(而不是通過使用NavigationLink)檢查TextField的有效性?

[英]How to check validation of TextField on Button Tap (not by using NavigationLink) in SwiftUI?

我想確認我的TextField“用戶名”和TextField“密碼”是否為空,然后再推送到下一個屏幕。 在SwiftUI中可以嗎?

例如我在Swift中這樣做:

@IBAction func btnSignInTapped(_ sender: UIButton) {
    if (String.isStringEmpty(aString: getString(anything: tfUserName.text))) {
        //Error message
        return
    } else if (String.isStringEmpty(aString: getString(anything: tfPassword.text))) {
        //Error message
        return
    } else {
        //Push screen
    }
}

同樣,如何在SwiftUI中做到這一點?

一旦接受了SwiftUI的“聲明式”性質,就很容易做到。 這是一個Swift游樂場,展示了一種非常准系統的方法:

import SwiftUI
import PlaygroundSupport


struct ContentView : View {

    @State private var email: String = ""
    @State private var password: String = ""

    private var validated: Bool {
        !email.isEmpty && !password.isEmpty
    }

    var body: some View {
        Group {
            TextField("email", text: $email)
            TextField("password", text: $password)

            if validated {
                Button("Login") {
                    print("Logging in")
                }
            }
        }
    }
}

PlaygroundPage.current.liveView = UIHostingController(rootView: ContentView())

基本上,您不是在TextField而是在@State上工作,並指示UI僅在滿足條件時才顯示按鈕。

當然,如果驗證比我們這里要復雜的多,那么您可能需要使用View-Model對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM