SwiftUI:验证和禁用表单

SwiftUI的Form视图允许我们以一种非常快速和方便的方式存储用户输入的信息,但有时更进一步很重要——在继续之前检查输入以确保其有效。

好吧,我们有一个专门用于此目的的修饰符:disabled()。这需要检查一个条件,如果该条件为 true,则附加的任何内容都不会响应用户输入——无法点击按钮,不能拖动滑块等等。您可以在此处使用简单的属性,但是任何条件都可以:读取计算出的属性,调用方法等。

为了说明这一点,这是一个接受用户名和电子邮件地址的表单:

struct ContentView: View {
    @State private var username = ""
    @State private var email = ""

    var body: some View {
        Form {
            Section {
                TextField("Username", text: $username)
                TextField("Email", text: $email)
            }

            Section {
                Button("Create account") {
                    print("Creating account…")
                }
            }

        }
    }
}

在此示例中,除非两个字段都填写,否则我们不希望用户创建帐户,因此我们可以通过添加disable()修饰符来禁用包含“Create Account”按钮的表单部分,如下所示:

Section {
    Button("Create account") {
        print("Creating account…")
    }
}
.disabled(username.isEmpty || email.isEmpty)

这意味着“如果用户名为空或电子邮件为空,则会禁用此部分”,这正是我们想要的。

您可能会发现值得将条件分解为单独的计算属性,例如:

var disableForm: Bool {
    username.count < 5 || email.count < 5
}

现在,您可以在修改器中引用它:

.disabled(disableForm)

无论您如何操作,我都希望您尝试运行该应用程序并查看SwiftUI如何处理禁用的按钮——当我们的测试失败时,该按钮的文本变为灰色,但是一旦测试通过,该按钮就会亮起蓝色。

译自 Validating and disabling forms

SwiftUI:使用 URLSession 发送和接收 Codable 数据 Hacking with iOS: SwiftUI Edition 纸杯蛋糕项目(一)

赏我一个赞吧~~~

你可能感兴趣的:(SwiftUI:验证和禁用表单)