码迷,mamicode.com
首页 > 其他好文 > 详细

06---数据的下拉刷新上拉加载更多实现

时间:2014-07-31 20:41:47      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   for   ar   div   时间   

以我最近做的微格项目为例,谈谈关于数据的下拉刷新上拉加载更多实现

 

页面加载数据:

#pragma mark - 加载微博数据
- (void)loadStatusData
{
    _statusesFrame = [NSMutableArray array];
    // 微博管理 加载
    [StatusManage getStatusesWithSendSinceId:0 maxId:0 Success:^(NSArray *statues) {
        
        for (Status *s in statues) {
        StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
        [_statusesFrame addObject:f];
        }
        [self.tableView reloadData];
    } failure:^(NSError *error) {
        NSLog(@"%@",error);
    }];
}

 

上拉刷新:

#pragma mark - 加载最新数据
- (void)loadNewData:(MJRefreshBaseView *)refreshView
{
    // 1.取出第一条微博数据的id
    StatusCellFrame *scf = [_statusesFrame firstObject];
    long long since = [[scf status] ID];
    // 2.获取在sence以后的微博数据
    [StatusManage getStatusesWithSendSinceId:since maxId:0 Success:^(NSArray *statues) {
        // 1》.获取最新微博数据的同时计算添加到对应的frame
        NSMutableArray *newStatusFrameArray = [[NSMutableArray alloc] init];
        for (Status *s in statues) {
            StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
            [newStatusFrameArray addObject:f];
        }
        // 2》.将数组整体插入到第一条微博前面
       [ _statusesFrame insertObjects:newStatusFrameArray atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newStatusFrameArray.count)]];
        // 3》.刷新表格
        [self.tableView reloadData];
        // 4.让刷新控件停止刷新状态
        [refreshView endRefreshing];    
        [self showNewStatusCount:newStatusFrameArray.count];
        
    } failure:^(NSError *error) {
        [refreshView endRefreshing];
    }];
}

 

下拉加载更多:

#pragma mark - 加载更多数据
- (void)loadMoreData:(MJRefreshBaseView *)refreshView
{
    // 1.最后1条微博的ID
    StatusCellFrame *f = [_statusesFrame lastObject];
    long long last = [f.status ID];
    
    // 2.获取微博数据
    [StatusManage getStatusesWithSendSinceId:0 maxId:last-1 Success:^(NSArray *statues) {
        // 1.在拿到最新微博数据的同时计算它的frame
        NSMutableArray *oldStatusFrameArray = [NSMutableArray array];
        for (Status *s in statues) {
            StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
            [oldStatusFrameArray addObject:f];
        }
        // 2.将newFrames整体插入到旧数据的后面
        [_statusesFrame addObjectsFromArray:oldStatusFrameArray];
        // 3.刷新表格
        [self.tableView reloadData];
        
        // 4.让刷新控件停止刷新状态
        [refreshView endRefreshing];
        [self showNewStatusCount:oldStatusFrameArray.count];
    } failure:^(NSError *error) {
        [refreshView endRefreshing];
    }];
}

 

心得就是:

     下拉加载更多,所得数组可以直接添加到当前显示页面数组的最后一个对象后面,

// 2.将newFrames整体插入到旧数据的后面
        [_statusesFrame addObjectsFromArray:oldStatusFrameArray];

 

      上拉刷新,所得数组的整体必须插入在当前显示页面数组的第一个对象前面  因为新浪返回的数据是根据时间越短 id越大 

      

// 2》.将数组整体插入到第一条微博前面
       [ _statusesFrame insertObjects:newStatusFrameArray atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newStatusFrameArray.count)]];

 

06---数据的下拉刷新上拉加载更多实现,布布扣,bubuko.com

06---数据的下拉刷新上拉加载更多实现

标签:style   blog   color   数据   for   ar   div   时间   

原文地址:http://www.cnblogs.com/lszwhb/p/3881504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!