NSSearchField TextDidChange 的方法是什么?
What is the method for the NSSearchField TextDidChange?
macOS 中函数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{
}
}
等同于委托方法controlTextDidChange:
notification
的对象是 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(_ sender: 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()
}
}
下面是我的 Attribute Inspector 的图片,它根据输入的每个字母调用一个函数来过滤和重新加载 NSTableView
macOS 中函数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{
}
}
等同于委托方法controlTextDidChange:
notification
的对象是 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(_ sender: 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()
}
}
下面是我的 Attribute Inspector 的图片,它根据输入的每个字母调用一个函数来过滤和重新加载 NSTableView