繁体   English   中英

SwiftUI 中的预填充文本字段在 iOS 15 中被破坏

[英]Prefill textfields in SwiftUI is broken in iOS 15

在 iOS 14 中,我使用以下代码预填充 coredata 模型中的所有文本字段

struct EditSimpleSearchView: View {

   @Environment(\.managedObjectContext)
    private var viewContext
    
   @ObservedObject
   private var item: FetchedResults<SavedSearchItemEntity>.Element

   @State var includeWords: String = ""

   init(item: FetchedResults<SavedSearchItemEntity>.Element) {
      self.item = item
   }


  var body: some View {
      VStack {
                Form {
                TextField.init("Include all words", text: 
                  $includeWords).disableAutocorrection(true
                }.onAppear {
                   includeWords = item.includeWords //load from coredata in onAppear
             }
      }

一旦我运行代码, includeWords的值就会出现在表单中的文本字段中。

一旦我更新到 Xcode 13 并在 iOS 15 上运行,只有当我在文本字段中输入光标至少一次时,文本字段中的includeWords才会出现

到目前为止,这是我调试的内容

  • 颜色没有问题(我的意思是想象文本和背景的颜色是一样的)
  • coredata 方面没有问题,因为这些值已成功存储在 coredata 中。

目标

  • 用户打开表单后,立即从 iOS 15 中的 coredata 填充文本字段

我目前没有想法,任何帮助表示赞赏。 如果不应该以不同的方式配置预填充,我愿意接受建议。

改变

 @ObservedObject private var item: FetchedResults<SavedSearchItemEntity>.Element

 @ObservedObject var item: SavedSearchItemEntity

并使用

$item.includeWords

直接在TextField中,不需要State变量

此外,摆脱自定义初始化。 在处理 SwiftUI 时远离它们

尝试这个:

init(item: FetchedResults<SavedSearchItemEntity>.Element) {
    self.item = item
    self._includeWords = State(initialValue: item.includeWords) // 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM