如何在滚动时重新加载表格中的数据?
如果我有一个网址" http:.......& start = 0& limit = 50"。
如何使用50增加开始和限制值来重新加载表中的数据。
有人能为此找到解决方案吗?
答案 0 :(得分:0)
您需要在表视图中为此实现加载更多功能。为了这样做,您需要在表格到达最后一个可以调用api的单元格时滚动表格视图的索引增加页码并在获得api的积极响应后将新记录添加到数组中。
请参阅以下代码以获取更多理解。
变量初始化
@interface ExampleListVC (){
BOOL hasNextPage,isLoadingNextPage;
int currentPage;
NSMutableArray *arrTableData;
}
@end
在viewDidLoad方法
中arrTableData = [[NSMutableArray alloc]init];
currentPage=-1;
hasNextPage = YES;
在tableView numberOfRowsInSection方法
中-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int count = (int)arrTableData.count;
if (hasNextPage)
{
count++;
}
return count;
}
在cellForRowAtIndexPath方法
中-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;
if (indexPath.row<arrTableData.count)
{
//Load TableviewCell you intend to show
}
else
{
//Show loading cell
cell = [self loadingCell:indexPath];
if (!isLoadingNextPage)
{
[self fetchData];
}
}
return cell;
}
加载单元代码
-(UITableViewCell *) loadingCell :(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];
cell.backgroundColor = [UIColor clearColor];
UIActivityIndicatorView *activityIndicatorView =[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicatorView.color = [UIColor blackColor];
activityIndicatorView.center = CGPointMake(self.tblView.center.x, cell.center.y);
[cell.contentView addSubview:activityIndicatorView];
[activityIndicatorView startAnimating];
cell.userInteractionEnabled = NO;
return cell;
}
Api通话实施
-(void)fetchData
{
isLoadingNextPage = YES;
if (currentPage==-1)
currentPage=0;
//API Call
{
DLog(@"API Call Response = %@",response);
isLoadingNextPage = NO;
if (response == nil)
{
hasNextPage=NO;
return;
}
if (success)
{
if (hasNextPage)
{
currentPage++;
}
[arrTableData addObjectsFromArray:response];
}
else
{
hasNextPage=NO;
}
//Reload tableview
}];
}
替代解决方案 使用SVPullToRefresh库集成无限滚动。 https://github.com/samvermette/SVPullToRefresh
答案 1 :(得分:0)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(self.comptabl.contentOffset.y >= (self.comptabl.contentSize.height - self.comptabl.bounds.size.height))
{
if(isPageRefreshing==NO){
isPageRefreshing=YES;
[appDelegate showIndicator:nil view1:self.view];
start=start+50;
[self makeRequest:start];
[self.comptabl reloadData];
NSLog(@"called %d",start);
}
}
}
我正在使用这种方法但是在任何时候该值都是以50为增量..我可以设置限制值