本文介绍了如何在UITableView中添加分页。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我从第一页的API解析数据并将其添加到 UITableView ,现在页面可以是多个让我们说100,我也从API获得总页数。但是我将如何在tableView中为每个页面实现它并在滚动时显示指示器。看看我的代码I parse data from API for the first page and add it to UITableView, now pages can be multiple lets say 100, I also get total number of pages from API also. but how will i implement it in tableView for every page and show indicator while scrolling. Have a look at my codeNSURL *theURL = [NSURL URLWithString:@"http://qa.networc.in:1336/api/dispatcher/rideScheduled/:1"];NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20.0f];//Specify method of request(Get or Post)[theRequest setHTTPMethod:@"GET"];//Pass some default parameter(like content-type etc.)[theRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];[theRequest setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];[theRequest addValue:token forHTTPHeaderField:@"x-access-token"];NSURLResponse *theResponse = NULL;NSError *theError = NULL;NSData *responseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];if (responseData == nil){ return;}NSDictionary *dataDictionaryResponse = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&theError];NSLog(@"url to send request= %@",theURL);NSLog(@"%@",dataDictionaryResponse);NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *task = [session dataTaskWithRequest:theRequest completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"Data = %@",text); } dictionary = [[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]objectForKey:@"data"]; NSArray *total = [dictionary objectForKey:@"total"]; NSLog(@"latlop %@", total); NSArray *IDArray = [dictionary objectForKey:@"docs"]; for (NSDictionary *Dict in IDArray) { NSMutableDictionary *temp = [NSMutableDictionary new]; [temp setObject:[Dict objectForKey:@"_id"] forKey:@"_id"]; NSLog(@"temp %@", temp ); NSString *booknumber = [Dict objectForKey:@"bookingNumber"]; if([booknumber length] != 0) [temp setObject:booknumber forKey:@"bookingNumber"]; NSMutableDictionary *stp1 = [Dict objectForKey:@"stop1"]; if ([[stp1 allKeys] containsObject:@"address"]) { [temp setObject:[stp1 objectForKey:@"address"] forKey:@"address"]; ]; } NSMutableDictionary *stp2 = [Dict objectForKey:@"stop2"]; if ([[stp2 allKeys] containsObject:@"address"]) { [temp setObject:[stp2 objectForKey:@"address"] forKey:@"address1"]; NSArray *latlongstp2 = [stp2 objectForKey:@"location"]; [temp setObject:[latlongstp2 objectAtIndex:0] forKey:@"latitude"]; [temp setObject:[latlongstp2 objectAtIndex:1] forKey:@"longitude"]; } NSMutableDictionary *currentloc = [Dict objectForKey:@"currentLocation"]; if ([[currentloc allKeys] containsObject:@"address"]) { [temp setObject:[currentloc objectForKey:@"address"] forKey:@"address1"]; } [getid addObject:temp]; } if (getid.count>0) { [self updateTable]; } }];[task resume];}- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; //count of section}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [getid count];}- (void)tableView:(UITableView *)tableView willDisplayCell: (UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == [getid count] - 1 ) { }}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ ScheduleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; cell.BookingId.text = [[getid objectAtIndex:indexPath.row]objectForKey:@"_id"]; cell.BookingNo.text = [[getid objectAtIndex:indexPath.row]objectForKey:@"bookingNumber"]; cell.stop1.text = [[getid objectAtIndex:indexPath.row]objectForKey:@"address"]; cell.stop2.text = [[getid objectAtIndex:indexPath.row] objectForKey:@"address1"]; cell.Currentloc.text = [[getid objectAtIndex:indexPath.row] objectForKey:@"address"]; return cell;}推荐答案有很多方法可以实现这类似于以下方式:There are many way to achieve this like following way: 首先你需要创建一个加载的全局 NSMutableArray 在 TableView 代表和 DataSaurce 。 现在,在您的api电话上,您需要在全局数组中添加That记录。 在最后一个单元格或 tableview 上,您可以使用下一页URL再次调用它,具体取决于每个Call上的API和重新加载表 您可以在github上使用loadMore许多thirdParty库:First you need to create one global NSMutableArray that load in TableView Delegates and DataSaurce.Now on your api call you need to add That records in global Array.On last cell or the tableview you can call it again with next page URL based on your API and reload table on each CallYou can use for loadMore many thirdParty library available on github: https://github.com/OpenFibers/DragRefreshAndLoadMoreTableDemo https://github.com/Abizern/PartialTable https://github.com/robertmryan/UITableView-Bottom-Refresh根据您的代码: in .h class#import <UIKit/UIKit.h>@interface ViewController : UIViewController{ NSURL* nextURL; int currentPage;} in .M Class- (void)viewDidLoad { currentPage = 1; [self LoadData]; [super viewDidLoad];}-(void)LoadData{ NSURL *theURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://qa.networc.in:1336/api/dispatcher/rideScheduled/:%d",currentPage]]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20.0f]; //Specify method of request(Get or Post) [theRequest setHTTPMethod:@"GET"]; //Pass some default parameter(like content-type etc.) [theRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [theRequest setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; [theRequest addValue:token forHTTPHeaderField:@"x-access-token"]; NSURLResponse *theResponse = NULL; NSError *theError = NULL; NSData *responseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError]; if (responseData == nil) { return; } NSDictionary *dataDictionaryResponse = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&theError]; NSLog(@"url to send request= %@",theURL); NSLog(@"%@",dataDictionaryResponse); NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *task = [session dataTaskWithRequest:theRequest completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"Data = %@",text); } currentPage ++; dictionary = [[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]objectForKey:@"data"]; NSArray *total = [dictionary objectForKey:@"total"]; NSLog(@"latlop %@", total); [getid addObjectsFromArray:total]; [self updateTable]; }]; [task resume];} 这篇关于如何在UITableView中添加分页。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
05-28 08:03