tavbview的单元格快速滑入空白处

时间:2017-07-24 02:12:26

标签: ios uitableview uitabview

一个tabview拉起,加载新数据,然后快速拉起,上面的单元格消失并变为空白,我猜因为刷新时间,数据不是新的 这是主要代码:

@interface DYBOrdersViewController ()<UITableViewDelegate,UITableViewDataSource>

@property(nonatomic,strong)NSMutableArray * currentArr;

@property(nonatomic,strong)NSArray * dataArr;

@property(nonatomic,strong)UITableView * mainTab;

@property(nonatomic,strong)UIRefreshControl * refreshC;

@property(nonatomic,assign)BOOL isPull;

@property(nonatomic,assign)CGFloat cellheight;

@end

static NSString * orderID = @"orderID";

@implementation DYBOrdersViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray * mutarr0 = [NSMutableArray arrayWithObjects:@"全部",@"全部",@"全部",@"完成",@"全部", nil];

    NSMutableArray * mutarr1 = [NSMutableArray arrayWithObjects:@"待取件",@"待取件",@"待取件",@"待取件", nil];

    NSMutableArray * mutarr2 = [NSMutableArray arrayWithObjects:@"未完成",@"未完成",@"未完成", nil];

    NSMutableArray * mutarr3 = [NSMutableArray arrayWithObjects:@"已完成",@"已完成", nil];

    NSMutableArray * mutarr4 = [NSMutableArray arrayWithObjects:@"已取消", nil];

    self.dataArr = @[mutarr0,mutarr1,mutarr2,mutarr3,mutarr4];

    self.currentArr = self.dataArr[0];

    [self setUI];

    self.automaticallyAdjustsScrollViewInsets = NO;
}

// 设置界面
-(void)setUI{
    UIRefreshControl * refreshC = [[UIRefreshControl alloc]initWithFrame:self.navBar.bounds];

    self.refreshC = refreshC;

    [refreshC beginRefreshing];
    [refreshC addTarget:self action:@selector(loadData) forControlEvents:UIControlEventValueChanged];

    NSArray * segArr = @[@"全部",@"待取件",@"待收货",@"待评价",@"已取消"];

    UISegmentedControl * segC = [[UISegmentedControl alloc]initWithItems:segArr];

    segC.frame = CGRectMake(0,64, self.view.frame.size.width,40);

    segC.tintColor = [UIColor sun_colorWithHex:0x0082f5];

//实现添加的事件

    [segC addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];

// 创建刷新界面

    UITableView * tabV = [[UITableView alloc]initWithFrame:CGRectMake(0,CGRectGetMaxY(segC.frame), [UIScreen mainScreen].bounds.size.width, self.view.frame.size.height - CGRectGetMaxY(segC.frame)-self.tabBarController.tabBar.frame.size.height) style:UITableViewStylePlain];

    tabV.separatorStyle = UITableViewCellSeparatorStyleNone;
    tabV.showsVerticalScrollIndicator = NO;
    tabV.delegate = self;
    tabV.dataSource = self;

    self.mainTab = tabV;

    [tabV registerClass:[DYBOrdersViewCell class] forCellReuseIdentifier:orderID];

    [tabV addSubview:self.refreshC];

    [self.view addSubview:tabV];

    [self.view addSubview:segC];
}
 // Refresh data method

-(void)loadData{

    [self.refreshC endRefreshing];

    [self.currentArr addObject:@"新数据"];

    self.isPull = NO;

    [self.mainTab reloadData];

}


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    return 100;
}
//点击不同分段就会有不同的事件进行相应

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    NSLog(@"%lu",(unsigned long)self.currentArr.count);
    return self.currentArr.count;

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    DYBOrdersViewCell * cell  = [tableView dequeueReusableCellWithIdentifier:orderID forIndexPath:indexPath];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
//    cell.textLabel.text = self.currentArr[indexPath.row];

    return cell;
}


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    DYBOrderdetailController * VC = [[DYBOrderdetailController alloc]init];
    VC.title = @"订单详情";
    VC.view.backgroundColor = [UIColor whiteColor];

    [self.navigationController pushViewController:VC animated:YES];

}

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    // 将要显示的最后一组
    NSInteger section  = indexPath.section;
    // 所有cell数
    NSInteger count = [tableView numberOfRowsInSection:section];

    //将要显示的row数量
    NSInteger row = indexPath.row ;

    if (section <0 || row <0) {
        return;
    }

    // 如果是最后一行最后一个cell 数据刷新
    if (row == count -1 && !self.isPull) {
        NSLog(@"要刷新了");
        self.isPull = YES;
        [self loadData];
    }

}

0 个答案:

没有答案