在呈现和关闭模式视图控制器时,如何保持收集视图单元格处于选中状态?

时间:2018-08-10 19:08:44

标签: swift uicollectionview uicollectionviewcell uicollectionviewflowlayout

我有一个UICollectionViewController,它也可以UICollectionViewDelegateFlowLayout来确定单元格的大小。一个单元格选择会模态显示一些自定义控件,然后在完成时返回,但是再次显示时将不再选择该选定的单元格。

我看到正在调用collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)的委托方法,但没有调用collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)。我还看到正在询问布局以获取首选的单元格大小,因此我认为它们正在重绘,但是单元格已经存在。

我可以通过调用relaodData()来解决问题,并且该单元格知道它已被选择并相应地重新绘制,但这似乎是一个代价高昂且错误的解决方案。关于我所缺少的任何建议吗?谢谢。

4 个答案:

答案 0 :(得分:0)

collectionView(_ collectionView:UICollectionView,willDisplay单元格:UICollectionViewCell,forItemAt indexPath:IndexPath)被调用,但不调用collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath)

答案 1 :(得分:0)

以下委托方法的默认实现取消选择单元格。

在不调用super的情况下覆盖它:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

答案 2 :(得分:0)

我看到正在调用collectionView(_ collectionView:UICollectionView,willDisplay单元格:UICollectionViewCell,forItemAt indexPath:IndexPath)的委托方法,但是没有collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath)被调用。我还看到正在询问布局以获取首选的单元格大小,因此我认为它们正在重绘,但是单元格已经存在。

答案 3 :(得分:0)

弄清楚了。

UICollectionViewController具有属性clearsSelectionOnViewWillAppear,该属性自动设置为true。

我要做的就是将其设置为false。