我有一个UICollectionViewController
,它也可以UICollectionViewDelegateFlowLayout
来确定单元格的大小。一个单元格选择会模态显示一些自定义控件,然后在完成时返回,但是再次显示时将不再选择该选定的单元格。
我看到正在调用collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
的委托方法,但没有调用collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
。我还看到正在询问布局以获取首选的单元格大小,因此我认为它们正在重绘,但是单元格已经存在。
我可以通过调用relaodData()
来解决问题,并且该单元格知道它已被选择并相应地重新绘制,但这似乎是一个代价高昂且错误的解决方案。关于我所缺少的任何建议吗?谢谢。
答案 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。