【问题标题】:UITableView Inserting Rows Invalid UpdateUITableView 插入行无效更新
【发布时间】:2017-02-09 17:58:23
【问题描述】:

我曾在指定的索引路径上删除和重新加载行,但从未插入。这是我想要做的:

func reloadTableView(newIndexPaths: [IndexPath]) {
    print(dataSource.numberOfItems()) // prints 44
    print(newIndexPaths.count) // prints 22
    tableView.beginUpdates()
    tableView.insertRows(at: newIndexPaths, with: .none)
    tableView.endUpdates() // Crashes before this line
}

这是我收到的崩溃:

由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第 2 节中的行数。包含在第 2 节中的行数 更新后的现有节(44)必须等于 更新前该部分中包含的行 (22),加号或减号 从该部分插入或删除的行数(插入 1 行, 0 已删除)加上或减去移入或移出的行数 该部分(0 移入,0 移出)。

没有意义的是它告诉我只尝试插入 1 个项目,但实际上我正在插入 22 个。我的数据源已正确更新,为什么这不起作用?

【问题讨论】:

  • 检查 newIndexPaths 的内容 - 那里有 22 个不同的索引路径,还是一个索引路径 22 次?

标签: ios swift uitableview


【解决方案1】:

@Paulw11 是的!这正是问题所在,我不敢相信我没有听懂。当我创建 indexPaths 时,我在循环创建过程时过早地忘记了增加行值。谢谢!

【讨论】:

    猜你喜欢
    • 2021-06-16
    • 2014-09-24
    • 2015-05-08
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2020-04-23
    相关资源
    最近更新 更多