繁体   English   中英

滚动视图时如何仅加载五个单元格?

[英]How to Load Only Five Cell When Table View Scrolled?

我用JSON数据创建了一个tableview,它包含分页,每个Web服务页面都包含10个数据,但是我希望当Table view Scroll时,我想每次仅加载5个项目,这怎么可能? 请给我解决方案。

我的代码

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSInteger currentOffset = scrollView.contentOffset.y;
NSInteger maximumOffset = scrollView.contentSize.height- scrollView.frame.size.height;
if (maximumOffset - currentOffset <= 0)
{
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];
});
}

和FetchData方法是

-(void)fetchedData:(NSData *)responsedata
 {
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.frame = CGRectMake(0, 0, 320, 44);
self.newsTable.tableFooterView = spinner;
if (responsedata.length > 0)
{
    [spinner startAnimating];
    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
{
if (self.imageArray == nil || self.imageArray.count < 1)
{
    return 0;
}
else
{
    return 1;
}
[self.newsTable reloadData];
}

我知道它被问过很多次,但我没有得到答复。请帮助我。

请检查以下代码

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSInteger currentOffset = scrollView.contentOffset.y;
    NSInteger maximumOffset = scrollView.contentSize.height- scrollView.frame.size.height;
    if (maximumOffset - currentOffset <= 0)
    {
        if([self.mTenarray count]==0) {
            pageNum = pageNum + 1;
            [self getData];
        } else {
            [self.imageArray addObjectsFromArray:self.mTenarray];
            [self.mTenarray removeAllObjects];
            [self.newsTable reloadData];
        }
    }
}
-(void)fetchedData:(NSData *)responsedata
{
    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    spinner.frame = CGRectMake(0, 0, 320, 44);
    self.newsTable.tableFooterView = spinner;
    if (responsedata.length > 0)
    {
        [spinner startAnimating];
        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;
}

我们在服务器上执行此操作的方式是为API提供了额外的“ 页面大小 ”参数,以便在您请求数据时,例如:

http://www.truemanindiamagazine.com/webservice/news.php?page=3&pageSize=5

它仅返回5个结果,而不是默认值(在您的情况下为10个)。 这意味着我们不必在iOS方面做任何花哨的筛选。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM