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