MJRefresh下拉刷新多次操作数组越界,程序停在TableView的UItableViewcell协议方法中,求解如何解决这种问题

解决方案 »

  1.   

    估计是你上拉加载的时候,没有处理好新请求的数据与原有数据的整合出现的这种错误,下拉刷新只是重新请求数据,更新数据源而已,不应该出现数组越界的情况啊,给你看看我用MJRefresh写的tableView的一个超类。
    - (UITableView *)superTableView{
        if (_superTableView == nil) {
            //创建tableView
            _superTableView = [[UITableView alloc]initWithFrame:CGRectMake((SCREEN_WIDTH - SEGEMENT_WIDTH) / 2, TABLE_TOP, SEGEMENT_WIDTH, SCREEN_HEIGHT - TABLE_TOP) style:UITableViewStylePlain];
            _superTableView.rowHeight = 125;
            _superTableView.showsVerticalScrollIndicator = NO;
            _superTableView.backgroundColor = [UIColor clearColor];
            _superTableView.dataSource = self;                                //数据源方法在子类中实现
            _superTableView.delegate   = self;                                  //代理方法在子类中实现
            _superTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            [self.view addSubview:_superTableView];
            
            MJRefreshNormalHeader * header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
                self.currentPage = 1;
                [self updateData];
            }];
            _superTableView.mj_header = header;
            [header setTitle:@"刷新完成" forState:MJRefreshStateIdle];
            [header setTitle:@"下拉刷新" forState:MJRefreshStatePulling];
            [header setTitle:@"正在加载" forState:MJRefreshStateRefreshing];
            header.stateLabel.font = [UIFont systemFontOfSize:14];
            header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];
            MJRefreshBackNormalFooter * footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
                self.currentPage = self.currentPage + 1;
                [self updateData];
            }];
            _superTableView.mj_footer = footer;
        }
        return _superTableView;
    }- (void)updateData{
        //子类中重写
    }- (void)updateView{
        [self.superTableView reloadData];
    }