使用系统自带下拉刷新
- (void)viewDidLoad {
//** 下拉刷新
UIRefreshControl *rc = [[UIRefreshControl alloc]init];
rc.attributedTitle = [[NSAttributedString alloc]initWithString:@"想看更多"];
[rc addTarget:self action:@selector(refreshTableView) forControlEvents:(UIControlEventValueChanged)];
self.refreshControl = rc;
}
- (void)refreshTableView
{
if (self.refreshControl.refreshing) {
self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"加载完成"];
dispatch_sync(dispatch_get_global_queue(0, 0), ^{
self.shopArray = [NSMutableArray array];//对数据容器初始化
这里实现新的网络请求
[self requestwithHttpArg];
[self.refreshControl endRefreshing];
});
}
}
容易崩的地方
因为对数据容器进行了初始化,或者删除了数据容器,所以再未完成视图更新时,
在以下方法中:
<pre name="code" class="html">- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
如果用到了数组容器便会崩在数组越界修改的方法是在每个用到数组容器的地方都要进行安全判断,需要形成一种习惯 if (_shopArray.count>= indexPath.section) { cell.model = _shopArray[indexPath.section]; }