【发布时间】:2020-04-20 14:54:09
【问题描述】:
我想让用户过滤长列表中的数据,以便更轻松地找到匹配的标题。
我在导航栏中放置了一个 TextView:
.navigationBarTitle(Text("Library"))
.navigationBarItems(trailing: TextField("search", text: $modelData.searchString)
我有一个响应搜索字符串变化的可观察对象:
class DataModel: ObservableObject {
@Published var modelData: [PDFSummary]
@Published var searchString = "" {
didSet {
if searchString == "" {
modelData = Realm.studyHallRealm.objects(PDFSummary.self).sorted(by: { $0.name < $1.name })
} else {
modelData = Realm.studyHallRealm.objects(PDFSummary.self).sorted(by: { $0.name < $1.name }).filter({ $0.name.lowercased().contains(searchString.lowercased()) })
}
}
}
一切正常,除了我必须在输入每个字母后点击该字段。出于某种原因,输入每个字母后焦点从字段中移开(除非我点击建议的自动更正 - 整个字符串一次正确添加到字符串中)
【问题讨论】: