這幾天因為住的地方的網出了一點問題,除了能上Q,上微博以外其他的網頁全都無法登陸。博客也就沒有跟進。
今天恢復了,所以繼續更新博客。也希望大家能繼續評論或私自給我一些建議或者交流:-)
今天找到了以前一個TableView的例子,主要關於上下拉刷新的,所以寫了一個demo,然後更新到博客上來。
內置刷新
內置刷新是蘋果IOS6以後才推出的一個API,主要是針對TableViewController增加了一個屬性,refreshControl,所以如果想用這個內置下拉刷新的話,最好給你的TableView指定一個專門的視圖控制器了。
使用的話,我們需要給refreshControl指定一個UIRefreshControl對象。跟進到頭文件中看到
三個屬性,算上初始化三個方法,並不難,然後配置refreshControl
[cpp]
/******內置刷新的常用屬性設置******/
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
refresh.tintColor = [UIColor blueColor];
[refresh addTarget:self action:@selector(pullToRefresh) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
設置了一個監聽方法,來簡單看下其實現
[cpp]
//下拉刷新
- (void)pullToRefresh
{
//模擬網絡訪問
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"刷新中"];
double delayInSeconds = 1.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
_rowCount += 5;
[self.tableView reloadData];
//刷新結束時刷新控件的設置
[self.refreshControl endRefreshing];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
_bottomRefresh.frame = CGRectMake(0, 44+_rowCount*RCellHeight, 320, RCellHeight);
});
}
因為這裡並不是真正進行網絡訪問,所以這裡用到了一個模擬網絡訪問延時的方法 dispatch_after 關於這個GCD方法並不難,只要設置延時時間和延時結束Block中的代碼即可。