我正在使用包含三个部分的表视图。用户可以删除第三部分的行。但是当我使用表视图委托方法删除行时,它会影响其他部分。那么我怎么能克服这个问题呢?
这是我的代码
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
numbers.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
答案 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)
希望有所帮助