SwiftUI 中的预填充文本字段在 iOS 15 中被破坏
Prefill textfields in SwiftUI is broken in iOS 15
在 iOS 14 中,我使用以下代码预填充核心数据模型中的所有文本字段
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 和 运行ning iOS 15,includeWords 的值仅当我在文本字段中至少输入一次光标时,文本字段才会出现
到目前为止,这是我调试的内容
- 颜色没有问题(我的意思是假设文本和背景的颜色相同)
- coredata 端没有问题,因为值已成功存储在 coredata 中。
目标
- 用户打开表单后,立即从 iOS 15
中的核心数据中填写文本字段
我目前没有想法,感谢任何帮助。如果预填充不应以不同方式配置,我愿意接受建议。
试试这个:
init(item: FetchedResults<SavedSearchItemEntity>.Element) {
self.item = item
self._includeWords = State(initialValue: item.includeWords) //
}
在 iOS 14 中,我使用以下代码预填充核心数据模型中的所有文本字段
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 和 运行ning iOS 15,includeWords 的值仅当我在文本字段中至少输入一次光标时,文本字段才会出现
到目前为止,这是我调试的内容
- 颜色没有问题(我的意思是假设文本和背景的颜色相同)
- coredata 端没有问题,因为值已成功存储在 coredata 中。
目标
- 用户打开表单后,立即从 iOS 15 中的核心数据中填写文本字段
我目前没有想法,感谢任何帮助。如果预填充不应以不同方式配置,我愿意接受建议。
试试这个:
init(item: FetchedResults<SavedSearchItemEntity>.Element) {
self.item = item
self._includeWords = State(initialValue: item.includeWords) //
}