下拉刷新 -> 在TableView中添加UIRefreshControl -> 下拉刷新 ->
刷新中 (做网络请求,数据重组) -> 请求结束,数据重组结束 -> 停止刷新 ->刷新TableView
先声明一个BOOL类型,模拟数据重组,每次刷新结束英雄配音和其他配音来回切换(数据重组就是重新获取数据)
<span style="font-size:24px;">@interface HeroDetailViewController ()
{
BOOL CHANGE;
}
@property (nonatomic, strong) UIRefreshControl * refreshControl;</span>
UIRefreshControl方法:<span style="font-size:24px;">#pragma mark添加下拉刷新控件
- (void)addRefreshViewControl
{
self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
self.refreshControl.tintColor = [UIColor lightGrayColor];
[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
[self.voiceTableView addSubview:self.refreshControl];
}
#pragma mark刷新后调用方法
-(void) refreshView:(UIRefreshControl *)refresh
{
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"更新数据中..."];
//网络请求,数据重组,当我们的网络请求和数据重组结束后,进入结束方法
[self performSelector:@selector(changeData) withObject:nil afterDelay:2.0];
}
#pragma mark数据重组
- (void)changeData
{
if (CHANGE) {
CHANGE = NO;
self.commonVoiceList = self.otherVoiceList;
}else{
CHANGE = YES;
self.commonVoiceList = self.heroVoiceList;
}
[self.refreshControl endRefreshing];
[self.voiceTableView reloadData];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
}</span>
真实数据重组就是重新网络获取所需数据,传给self.commenList。再[self.voiceTableView reloadData];
效果如图:
不过UIRefreshControl 只能加在TableView上,设置起来不太方便,还是使用第三方框架比较方便。