• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 出队的 UICollectionViewCell 未刷新

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:53:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个带有水平滚动单元格的 UICollectionView 的应用程序(一次只显示一个单元格)。每个单元格都有一个 UITableView,它在每个 UITableViewCell 中显示内容(URL 链接)。
问题是 UICollectionView 的前两个单元格显示正确的内容,但从第三个单元格开始,内容是从出列单元格显示的。仅当用户向下滚动然后向上滚动到顶部时,才会显示出列单元格的 UITableView 上的正确内容。
例如,第三个单元格的内容是来自第一个单元格的内容。 该单元格是托管 UITableView 的自定义 UICollectionViewCell。自定义单元格实现了UITableViewDataSourceUITableViewDelegate
我搜索了不同的论坛和网站,找到了刷新的解决方案。 我尝试将 [collectionView reload] 添加到 -cellForItemAtIndexPath: 方法,但它进入了恒定循环。我知道那不是正确的地方,但我没有任何其他方法会导致刷新(仅滚动单元格会加载下一个单元格的内容)。
有人可以帮我解决这个问题吗?



Best Answer-推荐答案


您遗漏了一些关于出队的事实。
当您 3d 自定义 UICollectionViewCell 出列时,它不会像第一次显示时那样分配。相反,您的 Collection View “重用”第一个单元格来显示 3d。 -(void)prepareForReuse 是清除自定义单元格内容的最佳时机。如果您覆盖它并清除它的内容,-cellForItemAtIndexPath: 将出列“清除”单元格,您可以进一步自定义。
但是,我不完全知道如何“清除”tableView,不确定是否可行。您必须在 -cellForItemAtIndexPath: 中的 tableView 上 reloadData。示例:

- (UICollectionViewCell*)collectionViewUICollectionView*)collectionView cellForItemAtIndexPathNSIndexPath*)indexPath
{
    MyCVCell *cell = [collectionView dequeueReusableCellWithIdentifier"MyCVCell" forIndexPath:indexPath];
    cell.arrayOfURLsForDisplay = self.arrayOfArraysOfURLs[indexPath.row];
    [cell.tableView reloadData];
    return cell;
}

我的意思是你的 viewController 中有一些 arrayOfArraysOfURLs 并且你从一些 arrayOfURLsForDisplay

在你的自定义单元格中显示 URL

关于ios - 出队的 UICollectionViewCell 未刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20928250/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap