0

我有一个UICollectionViewControllerUICollectionViewDelegateFlowLayout适用于大小单元格。一个单元格选择以模态方式呈现一些自定义控件,然后在完成后返回,但是当重新出现时,所选单元格不再被选中。

我看到了被调用的委托方法collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath),但不是collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。

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

4

4 回答 4

0

collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 被调用,但不是 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)

于 2018-08-10T19:14:34.137 回答
0

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

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

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
于 2018-08-10T19:14:38.907 回答
0

我看到 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 的委托方法被调用,但不是 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。

于 2018-08-11T20:20:05.367 回答
0

弄清楚了。

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

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

于 2018-08-13T20:26:24.437 回答