gpt4 book ai didi

iphone - 如何使用分页加载我的表格 View ?

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:06 24 4
gpt4 key购买 nike

我的应用程序中有一个表格 View ,我正在向其中加载不同类型的单元格。这很好并且运作良好。但现在我需要做分页。我需要将页码作为一个、两个等传递给服务,并在第一页结束时加载它。对于我加载的第一个,计数是 5,之后当滚动结束时我需要加载下一个。我是这个分页的新手。任何人都可以给我指导吗?我试过这样但是它会变成一个无限循环`

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell     forRowAtIndexPath:(NSIndexPath *)indexPath
{
int count1 = [array count];
NSLog(@"%d",count1);
NSLog(@"%d",indexPath.section);
NSLog(@"%d",max);
NSLog(@"%d",min);

if(indexPath.section == count1 - 1) // If going to display last row available in your source
{

NSLog(@"%d",max);
NSLog(@"%d",min);


if(min <= max)
{



[self getmessages:min];
}
else
{
self.mtableview.tableFooterView = nil; //You can add an activity indicator in tableview's footer in viewDidLoad to show a loading status to user.
}

}
}

`

最佳答案

UITableView 可以支持浏览多行数据,但是获取大量远程数据会降低您的应用程序速度、占用过多内存并使您的网络服务器陷入困境。如果用户永远不会向下滚动到那么远,这一切都是浪费。在本集中,您将学习如何使用一种简单的技术执行自动 UITableView 分页。

初始化

- (void)viewDidLoad {
[super viewDidLoad];

self.beers = [NSMutableArray array];
_currentPage = 0;
}

为当前页面发出 HTTP 请求

- (void)fetchBeers {
NSString *urlString = [NSString
stringWithFormat:@"http://localhost:3000/beers.json?page=%d",
_currentPage];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation =
[[AFJSONRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:
^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"responseObject %@", responseObject);

_totalPages = [[responseObject
objectForKey:@"total_pages"] intValue];

for (id beerDictionary in [responseObject
objectForKey:@"beers"]) {
Beer *beer = [[Beer alloc]
initWithDictionary:beerDictionary];
if (![self.beers containsObject:beer]) {
[self.beers addObject:beer];
}

[beer release];
}

[self.tableView reloadData];

} failure:
^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
[[[[UIAlertView alloc]
initWithTitle:@"Error fetching beers!"
message:@"Please try again later"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease] show];
}];

[operation start];
[operation release];
}

偏移行数

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section {
if (_currentPage == 0) {
return 1;
}

if (_currentPage < _totalPages) {
return self.beers.count + 1;
}
return self.beers.count;
}

渲染单元格

- (UITableViewCell *)beerCellForIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"cell";
UITableViewCell *cell = [self.tableView
dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:cellIdentifier] autorelease];
}

Beer *beer = [self.beers objectAtIndex:indexPath.row];
cell.textLabel.text = beer.name;
cell.detailTextLabel.text = beer.brewery;

return cell;
}

- (UITableViewCell *)loadingCell {
UITableViewCell *cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:nil] autorelease];

UIActivityIndicatorView *activityIndicator =
[[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.center = cell.center;
[cell addSubview:activityIndicator];
[activityIndicator release];

[activityIndicator startAnimating];

cell.tag = kLoadingCellTag;

return cell;
}

- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row < self.beers.count) {
return [self beerCellForIndexPath:indexPath];
} else {
return [self loadingCell];
}
}

获取下一页

- (void)tableView:(UITableView *)tableView 
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (cell.tag == kLoadingCellTag) {
_currentPage++;
[self fetchBeers];
}
}

这个例子来自NSScreencast Episode 8 - Automatic UITableViewPaging .

关于iphone - 如何使用分页加载我的表格 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13911977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com