在 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 的底部添加额外的单元格的主要内容,如果未能解决你的问题,请参考以下文章

在 UICollectionView 底部加载其他单元格

UIView 在滚动时从 UICollectionView 的底部分离

UICollectionView 自定义布局页脚视图不粘在集合视图的底部

有没有办法自动滚动到 UICollectionView 的底部

有没有办法自动滚动到UICollectionView的底部

iOS UICollectionView - 如何让第一个单元格出现在集合视图的底部?