在 UICollectionView 的底部添加额外的单元格
Posted
技术标签:
【中文标题】在 UICollectionView 的底部添加额外的单元格【英文标题】:add additional cells to the bottom ofUICollectionView 【发布时间】:2013-07-26 16:50:04 【问题描述】:我正在使用 UICollectionView 从 instagram 获取一组图像,但是当我到达页面底部时,我想加载过去的图像。但是,我确实收到了过去的图像,因为它们已登录到控制台但没有出现在屏幕上。
这是我检索图像的代码:
- (void)nextInstagramPage:(NSIndexPath *)indexPath
NSDictionary *page = self.timelineResponse[@"pagination"];
NSString *nextPage = page[@"next_url"];
[[InstagramClient sharedClient] getPath:[NSString stringWithFormat:@"%@",nextPage] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
self.timelineResponse = responseObject;
[self.collectionView reloadData];
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Failure: %@", error);
];
这是我检测用户何时到达屏幕底部的代码:
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
[self nextInstagramPage:indexPath];
编辑:我发现collectionview 是uiscrollview 的子类,那么我将如何正确实现具有索引路径的方法来检测滚动视图的底部!
【问题讨论】:
您确定“didEndDisplayingCell”会这样做吗?听起来当项目移出屏幕时会调用该方法... 当调用该方法时,您可以测试集合视图中的最后一个单元格是否是集合视图的 visibleCells 数组属性的一部分。 该方法(在文档中)被称为“使用此方法来检测何时从集合视图中删除单元格,而不是监视视图本身以查看它何时出现或消失。”所以这可能在不再分配单元格时调用,也就是它已出列。 在 collectionView:cellForItemAtIndexPath: 中进行测试,当您分配最后一个单元格时,然后调用您的方法以显示更多图片 你能给出一个完整的例子作为答案吗? 【参考方案1】:在您的代码中,我做了 2 个假设,即您有一组数据可以与您的 ui 集合视图和委托/数据源方法并行运行。您会在代码中至少注意到这两种方法。
– collectionView:numberOfItemsInSection:
– collectionView:cellForItemAtIndexPath:
第一个告诉您在 ui 集合视图中看到了多少项目/单元格/正方形,第二个告诉您创建项目/单元格/正方形的外观。
在第一种方法中,您告诉 uicolelction 视图有多少,在 cellforitem 中,您应该测试“这是最后一张图片”如果它是最后一张图片然后下载更多图片,如果它不是最后一张图片然后像什么都没发生一样继续
编辑:
[[self entries] count]
你有那个,现在在索引路径的行中使用单元格
if ( indexpath.item == ([[self entries] count] - 1) )
// download more data and add it to the 'entries' array
【讨论】:
如何添加对象;我知道我们确实在可变数组上添加了对象,但是包含数据的我的响应对象使用不同的方法 - (void)nextInstagramPage:(NSIndexPath *)indexPath NSDictionary *page = self.timelineResponse[@"pagination"]; NSString *nextPage = page[@"next_url"]; [[InstagramClient sharedClient] getPath:[NSString stringWithFormat:@"%@",nextPage] 参数:nil 成功:^(AFHTTPRequestOperation *operation, id responseObject) [self.collectionView cellForItemAtIndexPath:indexPath]; self.timelineResponse = responseObject; [self.collectionView reloadData]; 失败:^(AFHTTPRequestOperation *操作,NSError *错误) NSLog(@“失败:%@”,错误); ];以上是关于在 UICollectionView 的底部添加额外的单元格的主要内容,如果未能解决你的问题,请参考以下文章
UIView 在滚动时从 UICollectionView 的底部分离
UICollectionView 自定义布局页脚视图不粘在集合视图的底部