Ios 更改所有集合视图单元格中的视图

Ios 更改所有集合视图单元格中的视图,ios,swift,uicollectionview,swift4,swift5,Ios,Swift,Uicollectionview,Swift4,Swift5,我有一个集合视图,每个单元格都有一个视频(通过AVPlayer播放)和一个红色圆圈。单击视图控制器中的按钮时,所有单元格圆的颜色都应更改为蓝色,如果再次单击,则应将其更改回红色 所以我需要做的是:当在控制器视图中单击按钮时,更改所有单元格中的圆形视图,无论是否可见。我之所以说“可见”或“不可见”,是因为我一次只在屏幕上显示一个单元格。用户滑动以转到下一个单元格 我已经尝试过在单击按钮时使用reloadData()更新所有单元格的圆圈,但是,我发现的问题是视频会重置回开头(我不需要这样做,不仅仅是

我有一个集合视图,每个单元格都有一个视频(通过AVPlayer播放)和一个红色圆圈。单击视图控制器中的按钮时,所有单元格圆的颜色都应更改为蓝色,如果再次单击,则应将其更改回红色

所以我需要做的是:当在控制器视图中单击按钮时,更改所有单元格中的圆形视图,无论是否可见。我之所以说“可见”或“不可见”,是因为我一次只在屏幕上显示一个单元格。用户滑动以转到下一个单元格

我已经尝试过在单击按钮时使用
reloadData()
更新所有单元格的圆圈,但是,我发现的问题是视频会重置回开头(我不需要这样做,不仅仅是对可见单元格,而是对所有单元格)


我的其他选项是什么?

点击视图控制器中的按钮时,您需要更改正在集合视图中加载的数据/集合/数据数组。为了在(例如
didSelectItemAtIndexPath:(NSIndexPath*)indexPath
)中获得结果,您应该更改该特定单元格/集合项的数据模型。您可以为集合视图数据模型添加实例属性
isSelected


在您的情况下,调用reload data会调用所有的
UICollectionViewDelegate&UICollectionViewDataSource
方法,但是由于您没有使用更改数据,结果/UI会返回到初始状态。

您的主要问题是可重用性,即使调用reloadData(),它也只会加载可见的单元格,因此,您需要在单元格或单元格数据中保存某种排序或变量,以告知单元格当前处于何种状态。另外,我建议不要通过awakeFromNib更新单元格,而是使用自定义初始化函数