如何在呈现和关闭模态视图控制器时保持选中的集合视图单元格?
How to keep collection view cell selected when presenting and dismissing modal view controller?
我有一个 UICollectionViewController
也可以用作 UICollectionViewDelegateFlowLayout
来调整单元格大小。一个单元格选择模态显示一些自定义控件,然后 returns 完成时,但所选单元格再次出现时不再被选中。
我看到 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
的委托方法被调用,但 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
没有。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。
我可以通过调用 relaodData()
来解决问题,单元格知道它已被选中,并相应地重新绘制,但这似乎是一个代价高昂且错误的解决方案。关于我缺少的东西有什么建议吗?谢谢。
正在调用 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath),但不调用 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
以下委托方法的默认实现取消选择单元格。
在不调用 super 的情况下覆盖它:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
我看到正在调用 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 的委托方法,但没有调用 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。
想通了。
UICollectionViewController
有 属性 clearsSelectionOnViewWillAppear
自动设置为真。
我所要做的就是将其设置为 false。
我有一个 UICollectionViewController
也可以用作 UICollectionViewDelegateFlowLayout
来调整单元格大小。一个单元格选择模态显示一些自定义控件,然后 returns 完成时,但所选单元格再次出现时不再被选中。
我看到 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
的委托方法被调用,但 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
没有。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。
我可以通过调用 relaodData()
来解决问题,单元格知道它已被选中,并相应地重新绘制,但这似乎是一个代价高昂且错误的解决方案。关于我缺少的东西有什么建议吗?谢谢。
正在调用 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath),但不调用 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
以下委托方法的默认实现取消选择单元格。
在不调用 super 的情况下覆盖它:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
我看到正在调用 collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 的委托方法,但没有调用 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)。我还看到布局被要求提供首选单元格大小,所以我认为它们正在重绘,但单元格已经存在。
想通了。
UICollectionViewController
有 属性 clearsSelectionOnViewWillAppear
自动设置为真。
我所要做的就是将其设置为 false。