当表格中的DidScroll在ios中时,只加载少量单元格

时间:2014-10-30 05:35:41

标签: ios objective-c json uitableview

当我滚动JSON时,我创建了一个使用WebServices数据和UITableView包含更多页面的应用程序。这将获取并显示下一组数据。下一页包含10组数据。但我只想展示其中的5个。这怎么可能?如果可能,请分享代码。

这是我的代码:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    pageNum = pageNum + 1;
    [self getData];
}
-(void)getData
{
    NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.truemanindiamagazine.com/webservice/news.php?page=%d",pageNum]];
    dispatch_async(kBgQueue, ^{
        data = [NSData dataWithContentsOfURL:url];
        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    });
}

并获取数据方法代码:

-(void)fetchedData:(NSData *)responsedata
{
    if (responsedata.length > 0)
    {
        NSError* error;
        self.json = [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
        if ([[_json objectForKey:@"data"] isKindOfClass:[NSArray class]])
        {
             NSArray *arr = (NSArray *)[_json objectForKey:@"data"];
            [self.imageArray addObjectsFromArray:arr];
            [self.newsTable reloadData];
            NSLog(@"images,%@",self.imageArray);
        }
     }
    [self.spinner stopAnimating];
    self.spinner.hidesWhenStopped=YES;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.imageArray.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
} 

剩余代码为:

{
[super viewDidLoad];
pageNum=0;
self.imageArray =[[NSMutableArray alloc]init];
NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.truemanindiamagazine.com/webservice/news.php?page=%d",pageNum]];
[self.newsTable setShowsHorizontalScrollIndicator:NO];
[self.newsTable setShowsVerticalScrollIndicator:NO];

SDWebImageManager.sharedManager.imageDownloader.maxConcurrentDownloads = 3;
SDWebImageManager.sharedManager.imageDownloader.executionOrder = SDWebImageDownloaderLIFOExecutionOrder;

dispatch_async(kBgQueue, ^{
    data = [NSData dataWithContentsOfURL: url];
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}

}
-(CustumCell *)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];
}
{
    [cell.spinner startAnimating];
    NSDictionary *dict = [self.imageArray objectAtIndex:indexPath.section];
    NSString *img2=[dict valueForKey:@"post_image"];
    [cell.imagePhoto sd_setImageWithURL:[NSURL URLWithString:[img2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] placeholderImage:[UIImage imageNamed:@"Setting.png"] options:SDWebImageHighPriority completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
     {
            [cell.spinner stopAnimating];
             cell.spinner.hidesWhenStopped=YES;

     }];

1 个答案:

答案 0 :(得分:0)

获取临时数组malloc并尝试将数据从服务器添加到此数组。 现在我为此做了实现。

  -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {

        if([mTenarray count]==0) {
            pageNum = pageNum + 1;
            [self getData];
        } else {
            [self.imageArray addObjectsFromArray:mTenarray];
[mTenarray removeAllObjects];
            [self.newsTable reloadData];
        }

    }
    -(void)fetchedData:(NSData *)responsedata
    {
        if (responsedata.length > 0)
        {
            NSError* error;
            self.json = [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
            if ([[_json objectForKey:@"data"] isKindOfClass:[NSArray class]])
            {
                NSArray *arr = (NSArray *)[_json objectForKey:@"data"];
                [self.mTenarray addObjectsFromArray:arr];
                NSArray *mfivedatarray = [self.mTenarray subarrayWithRange:NSMakeRange(0, 5)];
                [self.imageArray addObjectsFromArray:mfivedatarray];
                self.mTenarray  // remove first five objects
                [self.newsTable reloadData];
                NSLog(@"images,%@",self.imageArray);
            }
        }
        [self.spinner stopAnimating];
        self.spinner.hidesWhenStopped=YES;
    }

在某些地方,我写了实现

的概念