#demo 描述
这个demo的上面的footerView和headerView终于是分开了,并且达成了block的形式。 推荐使用block形式这样代码更清晰。
#调用示例
- (void)addFooter
{
__unsafe_unretained MJTableViewController *vc = self;
MJRefreshFooterView *footer = [MJRefreshFooterView footer];
footer.scrollView = self.tableView;
footer.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) {
// 增加5条假数据
for (int i = 0; i<5; i++) {
int random = arc4random_uniform(1000000);
[vc->_fakeData addObject:[NSString stringWithFormat:@"随机数据---%d", random]];
}
// 模拟延迟加载数据,因此2秒后才调用)
// 这里的refreshView其实就是footer
[vc performSelector:@selector(doneWithView:) withObject:refreshView afterDelay:2.0];
NSLog(@"%@----开始进入刷新状态", refreshView.class);
};
_footer = footer;
}
- (void)addHeader
{
__unsafe_unretained MJTableViewController *vc = self;
MJRefreshHeaderView *header = [MJRefreshHeaderView header];
header.scrollView = self.tableView;
header.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) {
// 进入刷新状态就会回调这个Block
// 增加5条假数据
for (int i = 0; i<5; i++) {
int random = arc4random_uniform(1000000);
[vc->_fakeData insertObject:[NSString stringWithFormat:@"随机数据---%d", random] atIndex:0];
}
// 模拟延迟加载数据,因此2秒后才调用)
// 这里的refreshView其实就是header
[vc performSelector:@selector(doneWithView:) withObject:refreshView afterDelay:2.0];
NSLog(@"%@----开始进入刷新状态", refreshView.class);
};
header.endStateChangeBlock = ^(MJRefreshBaseView *refreshView) {
// 刷新完毕就会回调这个Block
NSLog(@"%@----刷新完毕", refreshView.class);
};
header.refreshStateChangeBlock = ^(MJRefreshBaseView *refreshView, MJRefreshState state) {
// 控件的刷新状态切换了就会调用这个block
switch (state) {
case MJRefreshStateNormal:
NSLog(@"%@----切换到:普通状态", refreshView.class);
break;
case MJRefreshStatePulling:
NSLog(@"%@----切换到:松开即可刷新的状态", refreshView.class);
break;
case MJRefreshStateRefreshing:
NSLog(@"%@----切换到:正在刷新状态", refreshView.class);
break;
default:
break;
}
};
[header beginRefreshing];
_header = header;
}