ios中uiscrollview的底部刷新控件
Posted
技术标签:
【中文标题】ios中uiscrollview的底部刷新控件【英文标题】:Bottom refresh control for uiscrollview in ios 【发布时间】:2016-06-08 06:42:55 【问题描述】:如何在 UIScrollView 的底部添加 UIRefreshController。 我正在 UIScrollView 中实现加载更多选项,以便我可以将更多数据加载到滚动视图中。
在此先感谢...
【问题讨论】:
为什么不用表格视图? 请查看组件SVPullToRefresh希望对您有所帮助 【参考方案1】:将您的数据放入表格视图中,然后可以使用标准的UITableViewDelegate
回调轻松完成。不要试图操纵 Apple 自己的 UIRefreshControl 进入表格或滚动视图的底部,因为它会以麻烦告终。
这样做:
在您的tableView:numberOfRowsInSection:
中返回data.count+1
在您的tableView:cellForRowAtIndexPath:
中检查if (indexPath.row == data.count)
。如果是这样,创建并返回一个基本单元格,其文本标签设置为“加载更多...”
在您的tableView:didSelectRowAtIndexPath:
中再次检查if (indexPath.row == data.count)
。如果是这样,请触发您自己的[self loadMoreData]
方法,然后调用[self.tableView reloadData]
。
【讨论】:
【参考方案2】:我做了这样的事情来处理在tableview(即dataTable)中加载更多数据:
1)在tableview的底部添加一个活动指示器(即spinner)。
2) 这样做:
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
if(self.dataTable.contentOffset.y<0)
//it means table view is pulled down like refresh
return;
else if(self.dataTable.contentOffset.y >= (self.dataTable.contentSize.height - self.dataTable.bounds.size.height))
NSLog(@"bottom!");
self.spinner.hidden = false;
[self.spinner startAnimating];
[self refreshPulled];
-(void)refreshPulled
//get more data and reload table here and hide spinner when all is done
希望对你有所帮助。
【讨论】:
【参考方案3】:UIRefreshControl 只能在 UITableView 中使用,正如 Apples 文档中所说:
Because the refresh control is specifically designed for use in a table view that's managed by a table view controller, using it in a different context can result in undefined behaviour.
【讨论】:
最好重新考虑您的设计。但是如果你需要它,只需 `[addSubview:[[UIRefreshControl alloc] init]]```然后给它添加一些约束以上是关于ios中uiscrollview的底部刷新控件的主要内容,如果未能解决你的问题,请参考以下文章