【问题标题】:How to prevent TextField from disappearing in SwiftUI List?如何防止 TextField 在 SwiftUI 列表中消失?
【发布时间】:2019-12-19 22:14:30
【问题描述】:

有一个讨厌的 SwiftUI 错误,如果将 TextField 放在 List 内的 HStack 中,TextField 就会消失

List {
    ForEach(0...200, id: \.self) { index in
        HStack {
            Text("Text \(index)")
            TextField("Test", text: .constant("TextField \(index)"))
        }
    }
}

https://recordit.co/X12uGct7gD

TextField 放在HStack / VStack / ZStack / .overlay() / .background() 中时会发生这种情况。当TextFieldForEach 的唯一孩子时,不会发生这种情况。

我已经提交了一个错误 (FB7500885),但我正在寻找来自社区的想法来解决它。到目前为止,这是我尝试过的:

  • TextField 上设置显式.frame()
  • TextField 上设置.fixedSized()
  • 使用 UITextField 包裹在 UIViewConvertible 中,有或没有布局约束

还有什么我可以尝试的吗?

【问题讨论】:

  • 您使用哪个 Xcode 版本?用于统计目的。
  • 这发生在 Xcode 11.2 和 11.3 上,无论是在设备上还是在模拟器上。
  • 今天刚打这个。令人抓狂!很高兴找到您的帖子。

标签: swift uitextfield uikit swiftui textfield


【解决方案1】:

试试下面的一个:

  List {
      ForEach(0...200, id: \.self) { index in
          HStack {
              Text("Text \(index)")
            TextField("Test", text: .constant("TextField \(index)")).id(index)
          }
      }
  }

【讨论】:

  • 这行得通!非常感谢。必须使用id() 仍然感觉 SwiftUI 中存在错误,但至少这是一个干净的解决方法。
猜你喜欢
  • 2022-09-29
  • 2020-06-11
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多