我有一个搜索栏,我搜索用户。当我第一次搜索用户时,它会显示正确的结果。但是当我移动到详细视图(到用户的配置文件)时,点击那里的任何按钮,然后向后移动,值会重复三次。移动时不会影响结果,不要点击任何按钮,然后向后移动。以下是我使用的代码片段:
testedVPPresenter.updateAvailableScreens()
当我从详细视图中移回时,似乎将结果调用了三次?这里的所有功能都不在详细视图中。
答案 0 :(得分:2)
在添加更多内容之前,只需从阵列中删除对象即可。
self.searchUsers.removeAll()
self.searchUsers.append(userData)
所以只需添加这段代码就可以了。
答案 1 :(得分:0)
在您添加数据的同一初始化数组中看起来像。所以尝试这种方式每当你点击按钮重新初始化你的数组或检查数组内的重复条目,并相应地追加数据。您可以遵循任何一种方法。
答案 2 :(得分:0)
你可以试着吼一声。在搜索
//Original array
var arrRes = [[String:AnyObject]]()
//Search Array
var searchArrRes = [[String:AnyObject]]()
var searching:Bool = false
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchArrRes = self.arrRes.filter({(($0["branchName"] as! String).localizedCaseInsensitiveContains(searchText))})
if(searchArrRes.count == 0){
searching = false
}else{
searching = true
}
self.tableView.reloadData();
}
就像给表视图方法
提供条件一样func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if( searching == true){
return searchArrRes.count
}else{
return arrRes.count
}
}
将值设置为表格单元格,如下面的
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:BranchLocationCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomCell
if( searching == true){
cell.tv_branch_name.text = searchArrRes[indexPath.row]["branchName"] as! String
}else{
cell.tv_branch_name.text = arrRes[indexPath.row]["branchName"] as! String
}
return cell;
}