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