如果我有2-3个TableView,我怎么能禁用'删除'行只针对特定的TableView?当我为if语句设置断点以检查使用哪个tableView时,它不起作用
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if tableView == self.firstTableView {
if editingStyle == .delete {
array.remove(at: indexPath.row)
firstTableView.deleteRows(at: [indexPath], with: .fade)
firstTableView.reloadData()
}
}
}
我试图在viewDidLoad中为secondTableView将编辑模式设置为false,但它也不起作用。
secondTableView.setEditing(false, animated: false)
据我所知,默认情况下它设置为false,所以我想如果commit editingStyle
为所有tableView启用它,那么我可以暂时禁用它。
答案 0 :(得分:1)
只需为每个TableView
添加一个标记,然后在if
或switch
语句中进行检查。
if tableView.tag == 0 {
if editingStyle == .delete {
array.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.reloadData()
}
}
答案 1 :(得分:0)
正确答案是检查editingStyleForRowAt indexPath
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
if tableView.tag == 1 {
return UITableViewCellEditingStyle.delete
} else {
return UITableViewCellEditingStyle.none
}
}
答案 2 :(得分:0)
您可以使用:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item or table to be editable.
if tableView == tableVw {
return false
} else {
return true
}
}
此处tableVw是您想要不可编辑的tableview
对象,或者您也可以使用标记而不是对象比较。
然后使用:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
//Write your delete cell logic here
array.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.reloadData()
}
}