UITableView 部分删除问题

Posted

技术标签:

【中文标题】UITableView 部分删除问题【英文标题】:UITableView section deletion problems 【发布时间】:2016-08-03 10:42:20 【问题描述】:

我有 2 sections1 / 59 行。 我删除了行(所以在 0 部分中我得到了 0 行),并得到了这个崩溃(也在-[UITableView deleteRowsAtIndexPaths:withRowAnimation:] 处的断点有效)。无法得到这个 1 删除)是如何计算的。

Invalid update: invalid number of sections.  The number of sections contained in the table view after the update (2) must be equal to the number of sections contained in the table view before the update (2), plus or minus the number of sections inserted or deleted (0 inserted, 1 deleted)

我收到此消息,但根本没有删除部分,-[UITableView deleteSections:withRowAnimation:] 处的断点不起作用。

有什么想法/建议吗?

谢谢!

【问题讨论】:

显示更多您尝试过的代码。 查看此链接***.com/questions/29813878/… beginUpdates/endUpdates之间没有调用reloadData 删除后是否更新了部分? 【参考方案1】:

我认为发生了什么,但我不确定,因为我没有看到您的代码。 我将尝试向您解释要删除表格中的行或部分时要遵循的过程。

我假设您有一个包含行的数组和其他包含部分的数组。

1 - 您必须从行数组中删除一行:

arrayRows.removeAtIndex(indexRow)

2 - 您必须从部分数组中删除一个部分(如果需要):

arraySections.removeAtIntex(indexSection)

3 - 现在是从表格中删除行的时刻,使用下一个代码:

tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths(indexRow, withRowAnimation: UITableViewRowAnimation.Fade)
//If you want delete sections, firstly you must delete all rows of this section
tableView.deleteSections(indexSection, withRowAnimation: UITableViewRowAnimation.Fade)
tableView.endUpdates()

//After this, you must reload data of table
tableView.reloadData()

PD:确保您的方法 numberOfRowsInSection 和 numberOfSectionsInTableView 从行和节的数组中获取数据。像这样:

func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    return arraySections.count


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    //Return array of rows of section
    return arrayRows.count

希望对你有帮助!

如果您有疑问,请告诉我,我会尝试以其他方式帮助您。

【讨论】:

以上是关于UITableView 部分删除问题的主要内容,如果未能解决你的问题,请参考以下文章

将子视图添加到 UITable

在 UITableView 中删除 CABasicAnimation

如何从 PrepareForReuse 的 UITableView 自定义行中删除视图?

UITableView 部分标题内的下拉 UIView

如何在 UITableview 的部分中对 NSarray 进行排序

神奇的记录,从 UITableView 中删除“第 0 节中的行数无效...”