有没有一种方法可以直接访问 UICollectionView 元素而无需重新加载?

Is there a way to directly access UICollectionView elements without reloading?

我还有一个未解决的问题,我想弄清楚如何在不自动滚动的情况下重新加载 collectionView。我还意识到在很多其他情况下我需要更改集合视图中的内容。此外,我还有一些项目需要更改 .alpha 并更改其文本。有没有办法在 Swift 中完成所有这些操作?例如(具体而言)如果我有一个集合视图,每个单元格中都有一个视图,并且该视图中有一个 textField,我可以更改 alpha 和文本(甚至更改带有动画的 alpha)而不重新加载整个 table?

查看 UICollectionView 的文档。有几种"reload"方法:

  1. reloadData()
  2. reloadSections(_:)
  3. reloadItems(at:)

如果您只想重新加载单个项目,请更新数据源的数据,然后调用 reloadItems(at:) 传入项目的索引路径。

如果单元格当前可见,另一种选择是使用 cellForItem(at:) 方法获取对现有单元格的引用。然后你可以根据需要直接访问单元格的UI个组件。您还应该根据需要更新您的数据模型,这样如果用户滚动并返回,单元格将被正确呈现。

最适合更新特定 UIcollectionViewcell 的自定义视图的位置是 reloadItemsAtIndexPaths。 您将使用 reloadData 处理一个特定项目而不是整个 collectionview。 您可以通过通知或代码中的一些回调来处理它,您可以在代码中决定何时更新哪个单元格。

希望对您有所帮助。