我需要在mvvm中搜索tableview。
我的viewmodel: - 搜索功能: -
ref = Database.database().reference()
ref?.child("Restaurants").observe(.childAdded, with: { (snapshot) in
let rest = snapshot.value as? String
if let actualPost = rest {
self.restList.append(actualPost)
print("list of rest ", self.restList)
self.restTableView.reloadData()
}
})
在viewcontroller中我刚给出了textfield委托方法。
我的viewcontroller: -
func search(searchText :String?) {
filteredListArray = datasourceModel.dataListArray?.filter{($0.restaurantname?.range(of: searchText!, options: .caseInsensitive) != nil)}
}
所以在textfield委托我如何搜索。如何从viewmodel获取搜索功能。如何进行搜索tableview任务
答案 0 :(得分:1)
您的shouldChangeCharactersIn
旁边可以调用searchViewModel
搜索方法,如果它没有触发自动更新您的数据源,则需要在调用搜索后触发数据源方法
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text,
let textRange = Range(range, in: text) {
let updatedText = text.replacingCharacters(in: textRange,
with: string)
if updatedText.count > 2 {
let result = searchViewModel.search(searchText :updatedText)
// result Should update your data Source searchViewModel.numberOfRowsInSection , and reload tableView
}
}
return true;
}