尝试使用 reloadsections 重新加载时,节中的行数无效

Posted

技术标签:

【中文标题】尝试使用 reloadsections 重新加载时,节中的行数无效【英文标题】:Invalid number of rows in section while trying to reload using reloadsections 【发布时间】:2017-10-21 06:12:05 【问题描述】:

我在表格视图中有两个部分。

    收到远程通知(插入)或过期计时器(删除)时,第 0 部分中的行会发生变化。 Section 1 将始终有 8 行,并且会在用户刷新时更改,所有 8 项都会更改。

我正在尝试在日期集更改(使用刷新)后重新加载整个第 0 部分。

self.candidates.remoteAll()
for object in json 
    let candidate = Candidate(/* Some data */)
    self.candidates.append(candidate!)


self.tableView.reloadSections(IndexSet(integer: 1), with: .automatic)

它以某种方式抛出

Fatal Exception: NSInternalInconsistencyExceptionInvalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (0), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).

不一致的行数不固定,有时更新前2个,更新后1个,有时更新前0个,更新后1个。我的猜测是,当用户尝试刷新第 1 节时,第 0 节正在插入或删除行。

但我试图刷新第 1 节,第 0 节应该不起作用,无论它是否具有一致的行数。我在哪里做错了?谢谢。

更新

这里是numberOfRowsInSection

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    switch section 
    case 0:
        if let invitations = self.invitations 
            return invitations.count
        
        return 0
    case 1:
        return self.candidates.count
    default: return 0
    

我在第 0 节使用 Realm Result,在第 1 节使用数组。

【问题讨论】:

你能发布你的 numberOfRowsInSection 您的 reload 调用正在重新加载第 1 节,而不是第 0 节,但您似乎正在向数组中添加一个对象,但没有调用 insertRows 来告诉 tableview 新行 @ViniApp 我更新了我的帖子,请看一下。谢谢。 @Paulw11 对不起,我忘了提,在添加新对象之前我确实调用了self.candidates.remoteAll() 【参考方案1】:

我认为在这行代码中应该是:self.candidates.removeAll()

【讨论】:

以上是关于尝试使用 reloadsections 重新加载时,节中的行数无效的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView reloadSection 不会从视图层次结构中删除旧视图

UITableView 重新加载部分时的内容插入更改

iOS7 UITableview 在重新加载部分/行时很慢

UITableView 中的 reloadSections 弹回顶部

如何在collectionView中重新加载补充视图

tableView 使用 reloadSections:withRowAnimation: 时,会跳动的问题