Swift - 如何使用.onSubmit 正确显示文本?

Swift - How to properly display text using .onSubmit?

我正在尝试制作一个非常简单的应用程序,它会询问用户的姓名并在用户按下回车键后使用输入向他们打招呼。我在下面包含了我的代码:

struct ContentView: View {

    @State private var input: String = ""

    var body: some View {
        VStack {
            TextField("Please enter your name: ", text: $input)
                .onSubmit {
                   Text("Hello, \(input)")
                }
        }
    }
}

如您所见,我正在使用 TextField() 的 .onSubmit 方法来检测用户何时按下回车键以显示带有 Text() 的字符串。如果我用 print() 替换 Text(),我的代码工作正常,但我并没有尝试在控制台中显示文本。在这一点上,我很确定我误解了 Text() 应该如何使用,并希望将其推向正确的方向。

提前致谢。

您不能将 View 放入 onSubmit 闭包中。

但是您可以添加一个布尔标志并在闭包中将其设置为 true

例如

struct ContentView: View {
        
    @State private var input: String = ""
    @State private var showGreeting = false
    
    var body: some View {
    
        VStack {
            TextField("Please enter your name: ", text: $input)
                .onSubmit {
                    showGreeting = true
                }
            if showGreeting {
                Text("Hello, \(input)")
            }
        }
    }
}