在 Swift 的 UIcollectionView 中获取下一个单元格
Posted
技术标签:
【中文标题】在 Swift 的 UIcollectionView 中获取下一个单元格【英文标题】:Get next cell in UIcollectionView in Swift 【发布时间】:2017-10-24 09:35:57 【问题描述】:我需要在集合视图中的 cellForItem 中获取下一个单元格,以便我可以更新视图对象。当我尝试以下操作时,它不起作用。我也试过indexPathForVisibleItems
传入indexPath.row + 1
并产生索引超出范围错误。
let index = IndexPath(row: indexPath.row + 1, section: indexPath.section)
if let nextCell = collectionView.cellForItem(at: index) as! MKRCell
nextCell.setupWaitView(time: timeToWait)
nextCell.waitViewHeightConstraint.constant = 80
nextCell.waitView.alpha = 1
nextCell.waitView.isHidden = false
这是否可能实现,或者我需要通过其他方式实现吗?
谢谢
【问题讨论】:
更改数据并使用该数据创建单元格要好得多。 在调用 cellForItem 的那一刻,下一个单元格不可用。那你为什么要这么做?你能解释更多细节吗? 如果当前单元格具有特定值(timeToWait),则尝试在下一个单元格上调用方法。 我认为您应该在没有单元格的情况下保存 timeToWait 值。然后在cellForItem
中设置它的值。
【参考方案1】:
不,在cellForItemAt
中初始化之前无法获取单元格对象,但是这里
您可以在显示来自UICollectionViewDelegate
的单元格之前接听电话
func collectionView(_ collectionView: UICollectionView,willDisplay cell: UICollectionViewCell,forItemAt indexPath: IndexPath)
if let myCell = cell as? MKRCell
与
如果你想设置单元格,你必须在UICollectionViewDataSource
中设置视图
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
【讨论】:
正在尝试 willDisplay,无法将 nextCell 转换为!不过 MKRCell! 这已经 nextCell 不应用任何计算,仅类型将其转换为您的调用类 我需要以 MKRCell 的身份访问 nextcell,以便可以从其中调用方法。【参考方案2】:你应该更新单元格:
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
请记住只修改您将从该方法返回的单元格。那时其他单元格可能不存在。
或者,您可以保留对单元格的弱引用并在需要时对其进行更新。
【讨论】:
我确实在 cellForItem 中尝试了上述方法,但没有成功,包括在特定索引 + 1 处重新加载项目以上是关于在 Swift 的 UIcollectionView 中获取下一个单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UICollectionView 中实现页面之间的间距?