今天发现一个问题搞了一个下午,异步网络加载和表格刷新控件混用的时候,懒加载出现了问题
之前我是这样写的
/** * 初始化表格 */ - (UITableView *)tableView { _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, TABLETOPVIEW_HEIGHT, SCREEN_WIDTH, TABLEVIEW_HEIGHT) style:UITableViewStylePlain]; [_tableView setDataSource:self]; [_tableView setDelegate:self]; [_tableView setBackgroundColor:NORMAL_BACKGROUND_COLOR]; [_tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; [_tableView setSeparatorInset:UIEdgeInsetsZero]; [ToolFunClass setExtraCellLineHidden:_tableView]; __weak typeof(self) weakSelf = self; // 添加传统的下拉刷新 // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock) [_tableView addLegendHeaderWithRefreshingBlock:^{ [weakSelf.tableView.footer resetNoMoreData]; [weakSelf loadNewData]; }]; // 添加传统的上拉刷新 // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock) [_tableView addLegendFooterWithRefreshingBlock:^{ [weakSelf loadMoreData]; }]; return _tableView; }
然后我发现我的表格下拉刷新动画一直卡着,就是不加载数据,上网查了下原因是由于懒加载没有判断控件是否已经加载,导致重复执行两次init事件,重置了表格的header.state,所以解决方法就是加上
/** * 初始化表格 */ - (UITableView *)tableView { //加上空值判断,防止重复init if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, TABLETOPVIEW_HEIGHT, SCREEN_WIDTH, TABLEVIEW_HEIGHT) style:UITableViewStylePlain]; [_tableView setDataSource:self]; [_tableView setDelegate:self]; [_tableView setBackgroundColor:NORMAL_BACKGROUND_COLOR]; [_tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; [_tableView setSeparatorInset:UIEdgeInsetsZero]; [ToolFunClass setExtraCellLineHidden:_tableView]; __weak typeof(self) weakSelf = self; // 添加传统的下拉刷新 // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock) [_tableView addLegendHeaderWithRefreshingBlock:^{ [weakSelf.tableView.footer resetNoMoreData]; [weakSelf loadNewData]; }]; // 添加传统的上拉刷新 // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock) [_tableView addLegendFooterWithRefreshingBlock:^{ [weakSelf loadMoreData]; }]; } return _tableView; }
时间: 2024-11-03 20:47:15