刷新和加载更多
TableView
/**
* 集成刷新控件
*/
- (void)setupRefresh
{
// 1.下拉刷新(进入刷新状态就会调用self的headerRereshing)
// [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing)];
// dateKey用于存储刷新时间,可以保证不同界面拥有不同的刷新时间
[self.tableView addHeaderWithTarget:self action:@selector(headerRereshing) dateKey:@"table"];
#warning 自动刷新(一进入程序就下拉刷新)
[self.tableView headerBeginRefreshing];
// 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)
[self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];
// 设置文字(也可以不设置,默认的文字在MJRefreshConst中修改)
self.tableView.headerPullToRefreshText = @"下拉可以刷新了";
self.tableView.headerReleaseToRefreshText = @"松开马上刷新了";
self.tableView.headerRefreshingText = @"MJ哥正在帮你刷新中,不客气";
self.tableView.footerPullToRefreshText = @"上拉可以加载更多数据了";
self.tableView.footerReleaseToRefreshText = @"松开马上加载更多数据了";
self.tableView.footerRefreshingText = @"MJ哥正在帮你加载中,不客气";
}
#pragma mark 开始进入刷新状态
- (void)headerRereshing
{
// 1.添加假数据
for (int i = 0; i<5; i++) {
[self.fakeData insertObject:MJRandomData atIndex:0];
}
// 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 刷新表格
[self.tableView reloadData];
// (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
[self.tableView headerEndRefreshing];
});
}
- (void)footerRereshing
{
// 1.添加假数据
for (int i = 0; i<5; i++) {
[self.fakeData addObject:MJRandomData];
}
// 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 刷新表格
[self.tableView reloadData];
// (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
[self.tableView footerEndRefreshing];
});
}
CollectionView
- (void)addHeader
{
__unsafe_unretained typeof(self) vc = self;
// 添加下拉刷新头部控件
[self.collectionView addHeaderWithCallback:^{
// 进入刷新状态就会回调这个Block
// 增加5条假数据
for (int i = 0; i<5; i++) {
[vc.fakeColors insertObject:MJRandomColor atIndex:0];
}
// 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[vc.collectionView reloadData];
// 结束刷新
[vc.collectionView headerEndRefreshing];
});
} dateKey:@"collection"];
// dateKey用于存储刷新时间,也可以不传值,可以保证不同界面拥有不同的刷新时间
#warning 自动刷新(一进入程序就下拉刷新)
[self.collectionView headerBeginRefreshing];
}
- (void)addFooter
{
__unsafe_unretained typeof(self) vc = self;
// 添加上拉刷新尾部控件
[self.collectionView addFooterWithCallback:^{
// 进入刷新状态就会回调这个Block
// 增加5条假数据
for (int i = 0; i<5; i++) {
[vc.fakeColors addObject:MJRandomColor];
}
// 模拟延迟加载数据,因此2秒后才调用(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[vc.collectionView reloadData];
// 结束刷新
[vc.collectionView footerEndRefreshing];
});
}];
}
浙公网安备 33010602011771号