使用 SwiftUI 启动 TextField 时出现 VStack 错误

Posted

技术标签:

【中文标题】使用 SwiftUI 启动 TextField 时出现 VStack 错误【英文标题】:VStack error when I initiate a TextField using SwiftUI 【发布时间】:2019-12-01 17:20:57 【问题描述】:

在我创建此 TextField 之前没有错误。

另外,如果我像这样创建TextField("Placeholder", text: .constant("")),也不会出现错误。

我正在尝试使用 Int 类型的 TextField 中的数据。

struct ContentView: View 
    @State private var answer: Int = 0

    var body: some View 
        VStack(alignment: .center) 
            Text("some text")
            Spacer()
            TextField($answer)
        
    

【问题讨论】:

【参考方案1】:

错误在于TextField,实际上是:

无法使用类型为“(绑定)”的参数列表调用类型“TextField<_>”的初始化程序

要解决这个问题,您需要首先提供title 和绑定参数的标签:text

TextField("This can be an empty string", text: $answerString)

注意TextField 不能单独接受一个数字作为绑定参数!您还必须提供Formatter 才能使其正常工作:

TextField("", value: $answer, formatter: NumberFormatter())

正如我提到的here,你不应该相信 Xcode 错误的原因,特别是当你使用 SwiftUI 时。

【讨论】:

以上是关于使用 SwiftUI 启动 TextField 时出现 VStack 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮单击时在 SwiftUI 中为 TextField 设置文本

检测用户何时停止/暂停在 TextField 中写入 - SwiftUI

TextField 接受有限的字符 SwiftUi

SwiftUI macOS 在 TextField 处于活动状态时使用箭头键滚动列表

点击另一个 TextField 时,SwiftUI TextField 不会提交更改

删除第一个字符时,SwiftUI TextField 冻结