我正在研究 UICollectionView 并且对方法的方式/时间有疑问:
- (UICollectionViewCell *)collectionView:(UICollectionView *)asker
cellForItemAtIndexPath:(NSIndexPath *)indexPath;
被调用。它具有的参数是一个 UICollectionView,这显然是 Controller View 中的 CollectionView。我认为索引路径只是已分配到 CollectionView 中的特定单元格的索引。所以,我的问题是:
这个方法什么时候被调用?当我在 UICollectionView 内部滚动并且需要用项目填充时,它会被调用吗?或者当 View 被实例化时,它会调用它来填充它的 CollectionView。
另外,如果我在同一个 View 中有两个 UICollectionView,会发生什么情况?我会使用这种方法并调用:
- (UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)cell
forIndexPath:(NSIndexPath *)indexPath;
在方法中两次并声明两个不同的重用标识符并按我希望的方式使用它们?
也如标题所说,@required 方法何时被调用?他们都以这种方式被召唤吗?
非常感谢您的帮助!
最佳答案
asker
参数是 Collection View ,其delegate
是您在其中实现该方法的类。默认情况下,如果您在 Xcode 中使用关联的 xib 创建了 UICollectionViewController,那么它就是您 View 中的 UICollectionView,并且已经设置了委托(delegate),如您所说。
只要 Collection View 需要指定索引路径的单元格,就会调用方法 collectionView:cellForItemAtIndexPath:
。实际实现是私有(private)的,但我们可以推断,只要它认为单元格即将变得可见(例如,因为用户正在滚动),它就会被调用。当然,当 Collection View 第一次出现时,所有可见的单元格都会被加载。
如果您有 2 个具有相同委托(delegate)的 Collection View ,那么您需要将 asker
参数与您的属性/ivars 进行比较,以确定哪个 Collection View 正在请求单元格并设置您的重用标识符适本地。
关于ios - UICollectionView @required 方法什么时候被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279395/