gpt4 book ai didi

ios - 搜索后删除会产生一个虚拟行

转载 作者:行者123 更新时间:2023-11-28 07:52:08 26 4
gpt4 key购买 nike

我在 View 中有一个条目列表。该 View 顶部还有一个搜索栏。进行搜索时,搜索结果会正确显示。现在,在显示搜索结果后,我删除了其中一个条目。这也很好用。但是当我开始删除在搜索字段中输入的搜索字符时,会显示一个仅包含删除和编辑图标的虚拟字段(与已删除的条目相关)...

enter image description here

这里删除的记录仍然显示为空,根本不应该显示。

这是我在搜索栏中编写的代码 textDidChange...

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText != "" {
charInSearchBar = true

//filter the results
searchActive = true

filtered = self.allCategories.filter({( data : CategoryItems) -> Bool in

if let sdf = data.category {
return (sdf.lowercased().contains(searchText.lowercased()))
}

return false
})

if(filtered.count == 0){
noSearchChar1 = true
noSearchChar = true

} else {
searchActive = true
}
tableview.reloadData()
}

else {

noSearchChar1 = false
searchActive = false
self.tableview.reloadData()

}
}

编辑 1

这就是删除行的方式...

    func deleteTapped(cell: ProductCategoryTableViewCell) {
if let indexPath = tableview?.indexPath(for: cell) {

if (searchActive) {

deleteBtnTapped = true
let alertController = UIAlertController(title: "Alert", message: "Delete this Category?", preferredStyle: UIAlertControllerStyle.alert)


let yesAction = UIAlertAction(title: "Yes", style: UIAlertActionStyle.default) { (result : UIAlertAction) -> Void in
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
context.delete(self.filtered[indexPath.row] as NSManagedObject)
self.filtered.remove(at: indexPath.row)
// try context.save()
do {
try context.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}

self.tableview.deleteRows(at: [indexPath], with: .fade)
self.tableview.reloadData()
self.deleteBtnTapped = false


}
}
}

最佳答案

您不仅需要从 filtered 中删除项目,还需要从 self.allCategories 中删除该项目。

context.delete(self.filtered[indexPath.row] as NSManagedObject)

// here remove it from allCategories as well
if let indexInAllCategories = self.allCategories.index(of: self.filtered[indexPath.row]) {
self.allCategories.remove(at: indexInAllCategories)
}

self.filtered.remove(at: indexPath.row)

关于ios - 搜索后删除会产生一个虚拟行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49364110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com