删除具有多个TableView的行

时间:2017-07-17 19:23:44

标签: ios iphone uitableview

如果我有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启用它,那么我可以暂时禁用它。

3 个答案:

答案 0 :(得分:1)

只需为每个TableView添加一个标记,然后在ifswitch语句中进行检查。

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()
         }
}