碰撞UITableView编辑功能

时间:2017-08-26 22:10:34

标签: ios swift uitableview swift3 edit

我之前使用以下代码删除了UITableView中的单元格:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        feedTable.deleteRows(at: [indexPath!], with: .fade)
    }
}

但是,现在我想为单元格添加自定义操作,所以我已经添加了这个:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let edit = UITableViewRowAction(style: .normal, title: "Edit", handler: { (action, indexPath) in
    })
    let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
    }
    edit.backgroundColor = UIColor.green
    return [delete, edit]
}

现在我很困惑我是否需要原始的commit editingStyle功能。我应该将所有编辑处理代码(feedTable.deleteRows(at: [indexPath!], with: .fade))移动到新功能吗?

在我看来,有许多不同的功能与UITableViewCell编辑有关,而且我对在哪些时候使用它们感到困惑。

1 个答案:

答案 0 :(得分:0)

我应该将所有编辑处理代码(feedTable.deleteRows(at:[indexPath!],带:.fade))移动到新函数吗?

您的问题的答案:是

实现tableView(_:editActionsForRowAtIndexPath :)方法时,表视图将不再为您生成“删除”按钮。这就是您需要创建自己的删除按钮的原因。

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

   let edit = UITableViewRowAction(style: .normal, title: "Edit", handler: { (action, indexPath) in
         // your handling code
   })

   let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
         // your handling code
   }

   // buttons colors
   edit.backgroundColor = UIColor.green
   delete.backgroundColor = UIColor.red

   return [delete, edit]
}