我从第一页的API解析数据并将其添加到中UITableView,现在页面可以是多个,比如说100,我也可以从API获取页面总数。但是我将如何在tableView中为每个页面实现它并在滚动时显示指示器。看看我的代码
UITableView
NSURL *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; }
有很多方法可以实现这一点,例如以下方法:
NSMutableArray
TableView
DataSaurce
tableview
https://github.com/OpenFibers/DragRefreshAndLoadMoreTableDemo
https://github.com/Abizern/PartialTable
https://github.com/robertmryan/UITableView-Bottom- Refresh
根据您的代码:
在.h类中
#import <UIKit/UIKit.h> @interface ViewController : UIViewController { NSURL* nextURL; int currentPage; }
在.M类中
- (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]; }