如何删除表格视图单元格中的特定行?

时间:2017-05-29 07:42:57

标签: swift uitableview rows edit

我正在使用包含三个部分的表视图。用户可以删除第三部分的行。但是当我使用表视图委托方法删除行时,它会影响其他部分。那么我怎么能克服这个问题呢?

这是我的代码

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == UITableViewCellEditingStyle.Delete {
      numbers.removeAtIndex(indexPath.row)    
      tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
    }

3 个答案:

答案 0 :(得分:3)

如果你想限制编辑第2节实现canEditRowAt(代码是Swift 3 +)

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return indexPath.section == 2
}

或添加支票

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete && indexPath.section == 2 {
      numbers.remove(at: indexPath.row)    
      tableView.deleteRows(at: [indexPath], with: .automatic)
    }

答案 1 :(得分:0)

正确的做法是

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return indexPath.section == 2
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
   if editingStyle == .delete && indexPath.section == 2
   {
      yourArray.remove(at: indexPath.row)
      yourtable.reloadData()
   }
}

答案 2 :(得分:0)

forRowAt indexPath: IndexPath一起使用时,您有IndexPath值。

它包含.section。因此,您只需检查您选择了哪个部分,然后执行或不删除。

删除特定部分的行:

tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

希望有所帮助