UICollectionView 完成加载后如何启动功能?

Posted

技术标签:

【中文标题】UICollectionView 完成加载后如何启动功能?【英文标题】:How can I start function when UICollectionView is finished loading? 【发布时间】:2017-01-04 07:40:50 【问题描述】:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "HomePageTitleCell", for: indexPath) as! HomePageTitleCell

   cell.news = homePageViewController.sliderList[indexPath.row]

   let returnleft = IndexPath(row: 0, section: 0)

   self.collectionView.scrollToItem(at: returnleft, at: UICollectionViewScrollPosition.left, animated: true)

   return cell  

加载UICollectionView后如何使用returnleft

let returnleft = IndexPath(row: 0, section: 0)

self.collectionView.scrollToItem(at: returnleft, at: UICollectionViewScrollPosition.left, animated: true)

不在cellForItemAt工作

【问题讨论】:

看起来类似于这个问题:***.com/questions/15985574/… 您需要更准确地了解“完成加载”的含义。加载所有集合视图时没有特定的点。它有意只加载它认为在任何给定时间需要的部分(以及加载的部分在 ios 10 中发生了变化)。当它加载其他部分时,将取决于滚动,除非所有视图同时在屏幕上。您需要准确说明“不工作”的含义。你能指望什么?实际发生了什么?如果这真的是关于滚动到一个单元格,这是一个重复的问题并且有答案。 【参考方案1】:

cellForItemAt 仅用于在表格视图中创建单元格。它将为表格中的每个单元格调用一次(不一定是一次,而是在您滚动到表格视图时)。

所以把你的代码移到更合适的地方,比如viewDidLoad

let returnleft = IndexPath(row: 0, section: 0)
self.collectionView.scrollToItem(at: returnleft, at:UICollectionViewScrollPosition.left, animated: true)

【讨论】:

以上是关于UICollectionView 完成加载后如何启动功能?的主要内容,如果未能解决你的问题,请参考以下文章

加载后如何将 UICollectionView 单元格居中?

首次加载后如何在 UICollectionView 中选择一些项目?

页面加载时滚动后如何访问 UICollectionView 中的特定单元格?

监听spring加载完成后事件

如果在重新加载期间触摸单元格,则重新加载后无法选择 UICollectionView 单元格

在 UICollectionView 中重新加载数据后保持 collectionview 速度