Ios 如何加上「;“加载更多”;滚动到表格底部时的页面
我正在试图找出处理分页或在UItableView中翻到底部时“加载更多…”的最佳方法。 我从web服务加载这些数据,这非常灵活,给了我一个pagesize和PageParameter。Pagesize定义每次回拉的结果数,而page参数定义搜索结果组,例如: page=1(返回结果1-10) 第2页(返回结果11-20) 每次向下滚动到底部时,我向服务器请求1次,服务器将给我1页(1、2、3、4…)和结果。 我试着这样装填Ios 如何加上「;“加载更多”;滚动到表格底部时的页面,ios,objective-c,web-services,uitableview,afnetworking,Ios,Objective C,Web Services,Uitableview,Afnetworking,我正在试图找出处理分页或在UItableView中翻到底部时“加载更多…”的最佳方法。 我从web服务加载这些数据,这非常灵活,给了我一个pagesize和PageParameter。Pagesize定义每次回拉的结果数,而page参数定义搜索结果组,例如: page=1(返回结果1-10) 第2页(返回结果11-20) 每次向下滚动到底部时,我向服务器请求1次,服务器将给我1页(1、2、3、4…)和结果。 我试着这样装填 -(void)scrollViewDidScroll:(UIScroll
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat height = scrollView.frame.size.height;
CGFloat contentYoffset = scrollView.contentOffset.y;
CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;
if(distanceFromBottom < height)
{
//to do something
[self.viewController getPics];
}
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGFloat height=scrollView.frame.size.height;
CGFloat contentYoffset=scrollView.contentOffset.y;
CGFloat DISTANCEFOMBOTTOM=scrollView.contentSize.height-contentYoffset;
if(与底部的距离<高度)
{
//做某事
[self.viewController getPics];
}
}
我真的不知道如何解决这个问题。任何帮助都会很好。提前感谢。您的解决方案存在以下几个缺陷:
- 首先,您不应该使用scrollViewDidScroll,因为它在滚动过程中不断被触发。对于这种功能,我总是更喜欢ScrollViewDiEndDecelling,它在每次滚动动作中只会触发一次
- 其次,您当前正在验证用户是否处于从底部到重新加载的scrollView.frame.size.height或更低的位置。因此,如果您的scrollView是带有导航栏和状态栏的全屏视图,那么在iPhone4上该值为416px,在iPhone5上该值为664px,这是相当多的。我建议您比较distanceFromBottom,它是一个低得多的硬编码值,例如100
- 首先,您不应该使用scrollViewDidScroll,因为它在滚动过程中不断被触发。对于这种功能,我总是更喜欢ScrollViewDiEndDecelling,它在每次滚动动作中只会触发一次
- 其次,您当前正在验证用户是否处于从底部到重新加载的scrollView.frame.size.height或更低的位置。因此,如果您的scrollView是带有导航栏和状态栏的全屏视图,那么在iPhone4上该值为416px,在iPhone5上该值为664px,这是相当多的。我建议您比较distanceFromBottom,它是一个低得多的硬编码值,例如100
- 以下代码段将检测用户是否滚动到滚动视图的底部。
您可以在if语句体中调用该方法从服务器(异步)获取更多数据
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([scrollView contentOffset].y == [scrollView contentSize].height - [scrollView frame].size.height) {
// The user did scroll to the bottom of the scroll view
}
}
以下代码段将检测用户是否滚动到滚动视图的底部。
您可以在if语句体中调用该方法从服务器(异步)获取更多数据
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([scrollView contentOffset].y == [scrollView contentSize].height - [scrollView frame].size.height) {
// The user did scroll to the bottom of the scroll view
}
}
(感谢原作者!),您可以轻松地将其集成到您自己的项目中
用法:
_footer = [MJRefreshFooterView footer];
_footer.scrollView = self.tableView;
_footer.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) {
// Load more data
};
(感谢原作者!),您可以轻松地将其集成到您自己的项目中
用法:
_footer = [MJRefreshFooterView footer];
_footer.scrollView = self.tableView;
_footer.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) {
// Load more data
};
如果您不想重新发明轮子,请查看开放源码,它将为您提供一行代码的无限滚动。或者查看文件UIScrollView+SVInfiniteScrolling.m,它将向您展示实现。如果您不想重新发明轮子,请查看开放源码,它将为您提供一行代码的无限滚动。或者查看文件UIScrollView+svInfinitieScrolling.m,它将向您显示实现.Tks以获取答案。是的,我知道,但当我滚动,而不是在底部,它加载,我滚动,我加载…,所以,我想当我滚动到底部,我加载。你有什么例子吗?对不起,我的英语不好。请回答。是的,我知道,但当我滚动,而不是在底部,它加载,我滚动,我加载…,所以,我想当我滚动到底部,我加载。你有什么例子吗?对不起,我的英语不好。