如何安全地删除 indexPath 处的行

Posted

技术标签:

【中文标题】如何安全地删除 indexPath 处的行【英文标题】:How can I securely delete Rows at indexPath 【发布时间】:2018-09-10 07:40:17 【问题描述】:

我认为这是一个相当愚蠢的问题,但我没有找到任何解决方案来安全地删除表格视图中的行。

calendarTableView.deleteRows(at: indexPaths, with: .fade)

我想在删除它们之前先检查是否有任何行,因为目前如果我尝试在没有要删除的行时出现这样的错误:

'尝试从第 0 部分删除第 6 行,更新前只包含 0 行'

我要显示/隐藏的数组如下所示:

var twoDimensionalArray = [
    ExpandableNames(isExpanded: false, names: ["Amy", "Bill", "Zack", "Steve", "Jack", "Jill", "Mary"]),
    ]

【问题讨论】:

在删除行之前从数据源数组中删除。 "Attempt to delete row from section 1, but there are only 1 sections before update"的可能重复 你是什么意思安全?但是,这是您需要遵循的简单策略:删除行+从数据源中删除数据;因为它们必须同步,否则您会收到刚刚收到的错误消息。 我不想从数据源中删除。我只希望我的表格视图不再显示这些行。如果我选择隐藏某个部分的行,则会调用此命令。 我认为你需要在这里管理两个数组。一个作为表数据源,一个用于您对表数据源数组所做的更改。 【参考方案1】:

无需管理两个数组或将其从数据源中删除。 只需在删除之前检查行数是否为 != 0。

let numberOfRows = calendarTableView.numberOfRows(inSection: section)

【讨论】:

【参考方案2】:

安全删除行,你应该确保删除前后的行数相同,总计数==新计数(删除后)+删除计数

【讨论】:

以上是关于如何安全地删除 indexPath 处的行的主要内容,如果未能解决你的问题,请参考以下文章

删除 TableView 中的行后如何更新 indexPath?

如何使用 jquery 或 javascript 删除索引处的行? [复制]

tableView.reloadRows(at:[indexPath],带有:.none)会像这样崩溃吗?

检查 indexPath 处的单元格是不是在屏幕 UICollectionView 上可见

从 -tableView:cellForRowAtIndexPath: 计算“indexPath”处的自定义 UITableViewCell 高度:?

如何使用单元格中的按钮删除集合视图中的项目?