微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableViewCell 内的 UICollectionView 缓慢滚动

如何解决UITableViewCell 内的 UICollectionView 缓慢滚动

我知道这个问题被问过几次,但其他解决方案对我不起作用。

我有这个模型:

var notifications = [Notification]()

Notification:
let user: User (name,profileimage,etc)
let items: [Movies] (movie has image,name,etc)

所以我在 tableview 中显示我的通知,每个单元格的顶部都有个人资料信息,collectionview 有下面的项目。

在我的 tableviewcell 中,我必须重新加载我的 collectionview 的数据才能显示正确的电影。我知道 reloadData 方法可能会导致这种滞后,但是否有任何解决方案可以避免它?

TableViewcell:

var notification: Notification! {
   didSet {
      collectionView.reloadData();
   }
}

我也在tablecell中尝试过这个东西,并在willdisplayTableViewcell中调用了这个方法,但它根本没有帮助:

func setCollectionViewDataSourceDelegate(forRow row: Int) {
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.reloadData()
}

图像是使用 kingfisher 加载的,所以在我的项目中的其他地方没问题。

            userProfileImage.kf.setimage(
                with: URL(string: profileImage),options: [
                    .processor(DownsamplingImageProcessor(size: CGSize(width: 175,height: 175))),.scaleFactor(UIScreen.main.scale),.transition(.fade(0.2)),]
            )

解决方法

我会注释掉您上面显示的代码,因为它只会妨碍并提供错误的读数。我的直觉是你已经设法将你的通知直接连接到你的 tableview/collection view 并且它们在后台线程上运行。我会做的来测试这个理论是在任何地方将代码包装起来,其中 UI 将像这样在主线程上执行更新

DispatchQueue.main.async { [unowned self] in
    //Your UI update code within cellforRow / cellForItem (both table and collection view) Here
}

尝试一一执行此操作,直到找到罪魁祸首,并尝试重构以获得更好的解决方案,这样您就不必强制执行此主线程指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。