Swift NSSearchField TextDidChange的方法是什么?
macOS中的函数Swift NSSearchField TextDidChange的方法是什么?,swift,xcode,macos,cocoa,Swift,Xcode,Macos,Cocoa,macOS中的函数searchBar(searchBar:UISearchBar,textDidChange searchText:String)的类似方法是什么 我得到了答案: @IBOutlet weak var searchBar: NSSearchField! func controlTextDidChange(_ obj: Notification){ let searchObject:NSSearchField? = obj.object as? NSSearchFie
searchBar(searchBar:UISearchBar,textDidChange searchText:String)
的类似方法是什么
我得到了答案:
@IBOutlet weak var searchBar: NSSearchField!
func controlTextDidChange(_ obj: Notification){
let searchObject:NSSearchField? = obj.object as? NSSearchField
if searchObject==self.searchBar{
}
}
等效的方法是委托方法
通知的对象是NSSearchfield
。你必须投这种类型
@IBOutlet weak var searchBar: NSSearchField!
func controlTextDidChange(_ notification : Notification){
guard let field = notification.object as? NSSearchField, field == self.searchBar else { return }
}
您需要添加controlTextDidChange
方法,如下图所示(最后一种方法),然后添加searchFieldDidEndSearching
跟踪您何时完成搜索,或者搜索栏是否为空,并且当您刚开始编辑空文本字段时,searchFieldDidStartSearching(uSender:NSSearchField)
将被调用
DispatchQueue.main.async {
self.searchTable.reloadData()
}
}
func searchFieldDidStartSearching(_ sender: NSSearchField) {
}
func controlTextDidChange(_ obj: Notification) {
guard let field = obj.object as? NSSearchField, field == self.searchBar else { return }
filteredPokemonList = allPokemonList.filter({ (pokemon) -> Bool in
return pokemon.name.lowercased().contains(field.stringValue.lowercased())
})
DispatchQueue.main.async {
self.searchTable.reloadData()
}
}
下面是我的属性检查器的一张图片,该检查器根据输入的每个字母调用一个函数,以过滤和重新加载NSTableView
请删除您的“得到答案”编辑并将其作为实际答案重新发布!