我该如何将UIRefreshControl添加到UICollectionView的底部?也就是说,当向上滚动(查看旧数据或其他内容)时,它是如何工作的?
我该如何将UIRefreshControl添加到UICollectionView的底部?也就是说,当向上滚动(查看旧数据或其他内容)时,它是如何工作的?
你不能使用UIRefreshControl
来实现这个功能,但是如果您接受更简单的解决方案,可以设置集合视图在滚动到底部时自动加载更多数据。(顺便说一下,这是一种更常见的用户界面...下拉刷新并不常见,但是当您到达底部时自动检索更多数据则很常见。)
最原始的做法是响应UIScrollViewDelegate
方法,并确定是否已经滚动到了集合视图的底部(集合视图本身是UIScrollView
的子类):
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
{
if (!self.isLoadingMoreData)
{
self.loadingMoreData = YES;
// proceed with the loading of more data
}
}
}
更好的做法是,如果您有更多数据要加载,则在底部显示一个单元格,上面写着“请稍等,正在加载更多数据”,可能还带有 UIActivityIndicatorView
。例如,如果您有更多数据要加载,可以添加一个带有此单个单元格的新部分。如果正确格式化此额外的单元格(例如,一个跨越整个集合视图的单个单元格),它肯定能呈现您所期望的效果。
不行。你无法真正自定义UIRefreshControl
。
numberOfRowsForSection
返回一个额外的行(假设您有额外的数据需要获取)。然后,cellForRowAtIndexPath
只需查看它是否超出了现有数据的范围,并在这种情况下显示“加载”单元格。请参见 https://github.com/robertmryan/UITableView-Bottom-Refresh 以获得简单的说明。 - RobrableView.deleteRowsAtIndexPaths([myIndexPath], withRowAnimation: .None)
。 我得到的错误是-->更新后现有部分中包含的行数(14)必须等于更新前该部分中包含的行数(14),加上或减去从该部分中插入或删除的行数。看起来好像该行没有被删除。现在我正在查看是否因为委托方法返回一个额外的计数对象 --> numberOfRowsInSection {return sellerData.count + 1} - Just a coderdeleteRows...
时,它将调用numberOfRows...
,该方法现在必须返回比之前少一个的值。 - Rob