SwiftUI-视图控制器

时间:2019-12-11 11:55:28

标签: ios swift swiftui

我创建了一个新的SwiftUI项目,并在视图中添加了文本字段和按钮。 如何在按下按钮后读出用户在文本字段中键入的内容并使用if-语句?

当前代码:

var body: some View {
        VStack {
            Text("Hello!").font(.system(size: 32, design: .rounded))
            TextField("Write something..").multilineTextAlignment(.center)
            Button() {
                Text("Send")
            }
        }
}

谢谢!

2 个答案:

答案 0 :(得分:1)

“您需要绑定来存储输入的文本,然后可以在按钮的操作处理程序中阅读它。

编辑:要求我使用该值对结果进行操作。

如果要在某种情况下(或其他任何“结果”)显示警报,有几种方法可以执行。最简单的方法是在满足条件时将@State设置为true,并让body中的某项内容对此更改做出响应。

@State var showTextAlert = false
@State var text: String = ""

var body: some View {
        VStack {
            Text("Hello!").font(.system(size: 32, design: .rounded))
            TextField("Write something..", text: $text).multilineTextAlignment(.center)
            Button(action: {
                self.showTextAlert = self.text == "test"
            }) {
                Text("Check If \"Test\"")
            }
        }
        .alert(isPresented: $showTextAlert) { .init(title: Text("Text is \"test\"")) }
}

如果您要引用其他内容进行验证等,请使用@ObservableObject或将其发送给您拥有的其他任何引用。您拥有文字的价值,并且可以对其进行任何常规操作。

答案 1 :(得分:0)

TextField是require参数是placeholdertext

  1. 占位符:字符串
  2. 文本:绑定

注意:也可以在需要时使用其他一些参数

因此,我们必须将字符串绑定到text参数。我们可以使用@State

绑定变量
struct ContentView: View {

    @State var textFieldText: String = ""
    var body: some View {
        VStack {
            TextField("Write something..", text: $textFieldText)
               .multilineTextAlignment(.center)
            Button(action: {
               // here you can read the value of self.textFieldText
            }) {
               Text("Send")
            }
        }
    }
}