项目开发过程中经常会用到tableview来加载网络数据,而经常要用到的一个功能就是下拉刷新,上拉加载更多。虽然有很多第三方框架可以使用,但是有时我们还是想自己手动定制来达到目的。
下面我们来具体看看如何实现
下拉刷新
这个功能我们可以使用系统自带的refreshControl,但是这个控件只能用在tableViewController里面。
具体实现看代码:
viewController.m 文件
==========================
@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
@property (strong ,nonatomic)NSMutableArray *modelArray;
@end
@implementation ViewController
static NSString *const CellId = @"cell";
- (NSMutableArray *)modelArray{
if (!_modelArray) {
_modelArray = [NSMutableArray array];
}
return _modelArray;
}
- (void)viewDidLoad{
[super viewDidLoad];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
UIRefreshControl *refresh = [[UIRefreshControl alloc]init];
refresh.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];
[refresh addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
[self.refreshControl beginRefreshing];
}
- (void)refresh{
if (self.refreshControl.isRefreshing){
[self.modelArray removeAllObjects];//清除旧数据,每次都加载最新的数据
self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"加载中..."];
[self addData];
self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];
[self.tableView reloadData];
[self.refreshControl endRefreshing];
}
}
//加载数据
- (void)addData{
NSDate *date = [[NSDate alloc]init];
for (int