iOS开发之tableview位置错乱,偏移,回到原来位置

本文介绍了一种解决TableView上拉刷新时数据位置错乱的方法。通过调整刷新后的TableView位置,确保每次加载的新数据都能准确展示。适用于分页加载场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上拉刷新后发现数据位置错乱?tableview的偏移不对?比如数据一共有40条,一次加载20条,正常应该显示在第21条,上拉时加载后发现tableview停在了第11条或者30几条,如果你发生了和我一样的情况,那看这里

- (void)addRefresh {

__weak typeof (self) weakSelf = self;
weakSelf.nomalTable.mj_header =  [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    weakSelf.page = @"0";

    [weakSelf tableReloadCtrlWithPage];
}];

weakSelf.nomalTable.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
    NSInteger index = [self.page intValue];
    index += 1;

    weakSelf.page = [NSString stringWithFormat:@"%ld",(long)index];
    [weakSelf tableReloadCtrlWithPage];
}];

[weakSelf.nomalTable.mj_header beginRefreshing];
}



 // 这里的page指的是分页页数
 // 当为if page == 1 else page += 1
  - (void)tableReloadCtrlWithPage {
    [self.nomalTable reloadData];

if (!self.dataArr.count?YES:NO) {
    self.nomalTable.tableFooterView = [self getTableFootView:self.nomalTable.bounds str:@"nodata"];
}else{
    self.nomalTable.tableFooterView = [UIView new];
}

NSInteger oldCnt = [self.dataArr count];
if (oldCnt > 0 && [self.page intValue] != 0) {
    NSInteger row = oldCnt - 20;
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
    [self.nomalTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值