在 ios 中加载更多表格视图 [英] Load More Table View in ios

查看:21
本文介绍了在 ios 中加载更多表格视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在用户从 Web 服务滚动表视图时加载数据.我的网络服务包含三页,但我只得到一页 JSON 数据.我的代码就像

i want to load a data when user scroll a table view from web services. my web services contain three page but i get only one page JSON data. My code for this like as

在 .h 文件中

@property(strong,nonatomic)IBOutlet UITableView *table;
@property(strong,nonatomic)NSArray *imagesa;
@property(strong,nonatomic)IBOutlet UIActivityIndicatorView *spinner;

并在.m文件中先定义两个带有url的宏队列

and in .m file first define two macro queue with url

#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
#define imgURL [NSURL URLWithString:@"http://www.truemanindiamagazine.com/webservice/news.php"]

然后像这样查看

- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_async(kBgQueue, ^{
    jdata = [NSData dataWithContentsOfURL: imgURL];
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:jdata waitUntilDone:YES];
});
self.table.pagingEnabled=YES;
[self.table reloadData];

-(void)fetchedData:(NSData *)responsedata
{
NSError* error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
self.imagesa=[json objectForKey:@"data"];
if (self.imagesa.count)
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.table reloadData];
    });
}
NSLog(@"images,%@",self.imagesa);
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.imagesa.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *cellidentifier=@"Cell";
CustumCell *cell=[tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (cell == nil)
{
    NSArray *nib=[[NSBundle mainBundle]loadNibNamed:@"CustumCell" owner:self options:nil];
    cell=[nib objectAtIndex:0];
}

NSDictionary *dict = [self.imagesa objectAtIndex:indexPath.row];
NSString *img2=[dict valueForKey:@"post_image"];
[cell.photoimage sd_setImageWithURL:[NSURL URLWithString:[img2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] placeholderImage:[UIImage imageNamed:@"Hisoka.jpg"] options:SDWebImageProgressiveDownload completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"downloaded");

    });
}];
NSString *name=[dict valueForKey:@"post_title"];
cell.namelabel.text=name;
NSString *des=[dict valueForKey:@"post_content"];
cell.deslabel.text=des;


NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
 NSString *date=[dict valueForKey:@"post_date"];
NSDate * dateNotFormatted = [dateFormatter dateFromString:date];
[dateFormatter setDateFormat:@"d-MMM-YYYY"];
NSString * dateFormatted = [dateFormatter stringFromDate:dateNotFormatted];
NSLog(@"Date %@",dateFormatted);
cell.datelabel.text=dateFormatted;
[self.spinner stopAnimating];
self.spinner.hidesWhenStopped=YES;

if (indexPath.row == [self.imagesa count] - 1)
{
    [self.table reloadData];
}
return cell;
}

我如何在表视图中进行分页并将更多数据加载到表视图中,就像在 android 中加载更多列表视图一样.

how i get paging in table view and load more data in to table view like as in android load more list view.

推荐答案

您必须再次调用服务并增加页码.我没有看到您为获取数据而传递的任何 pagenumber 参数.也许如果您的服务包含 3 个页面,那么您的服务必须有 pagenumber 参数,以便您可以按页面获取数据.

you have to call service again with increase pagenumber. i dont see any pagenumber parameter you are passing to get data. maybe if your service contain 3 pages then your service must have pagenumber parameter so you can get data as per page.

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offsetY = scrollView.contentOffset.y;
    CGFloat contentHeight = scrollView.contentSize.height;
    if (offsetY > contentHeight - scrollView.frame.size.height)
    {
       // when your table is at last cell then increase your pagenumber and call service again and send increased pagenumber. 
       pageNum = pageNum + 1;
       [self getData];
    }
}

-(void)getData
{
     dispatch_async(kBgQueue, ^{
          jdata = [NSData dataWithContentsOfURL: imgURL];
          [self performSelectorOnMainThread:@selector(fetchedData:) withObject:jdata waitUntilDone:YES];
     });
}

也许这对你有帮助.

这篇关于在 ios 中加载更多表格视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆