首页 > 解决方案 > 重新加载时,Swift TableView 内容消失并闪烁

问题描述

我正在构建一个聊天应用程序,其中包含人们可以聊天的各种频道的表格视图。

如果有新消息(通道)进入,我会更新我的数据存储,然后重新加载表视图。在这种特殊情况下,如果用户接受频道邀请;该通道被添加到数据存储中。

每次添加新频道时,都会调用此方法:

 @objc func processChannels() {
        if self.airlockStore.unPinnedChannelDataObjects.isEmpty == true {
            return
        } else {
            let pinnedSection = self.tableViewAdaptor!.sections[0] as! TableViewAdaptorSection<ChannelTableViewCell, ChannelDataObject>
            let unPinnedSection = self.tableViewAdaptor!.sections[1] as! TableViewAdaptorSection<ChannelTableViewCell, ChannelDataObject>
            unPinnedSection.items = airlockStore.unPinnedChannelDataObjects
            pinnedSection.items = airlockStore.pinnedChannelDataObjects
        }
        updateTableView()
    }

随后,这个被称为:

  @objc func updateTableView() {
        tableViewAdaptor?.tableView.isUserInteractionEnabled = true
        tableViewAdaptor?.tableView.reloadData()
    }

但是,我总是会闪烁/表格视图的内容会在以预期方式显示之前暂时消失。

已阅读有关加载表格视图时闪烁的几篇文章,但尚未能够解决此问题。

我正在考虑重新加载表格视图中的各个行,但问题是;无法保证将新频道添加到我的频道列表中的索引位置。

标签: iosswiftuitableviewreloaddata

解决方案


在表格视图中添加/删除行之前和之后使用它:

tableview.beginupdates() 

// adding/deleting row 

tableview.endupdates()

推荐阅读