今天发现一个问题搞了一个下午,异步网络加载和表格刷新控件混用的时候,懒加载出现了问题
之前我是这样写的/**
* 初始化表格
*/
- (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;
}