iOS6.0中的一個新控制項UIRefreshControl
照例
今天逛論壇看到別人發的文章,說此控制項只能用於UITableViewController,如果用在其他ViewController中,運行時會得到如下錯誤提示:(即UIRefreshControl只能被UITableViewController管理)
其實他忽略了一點,在ViewController上可以調用
- (void)addSubview:(UIView *)view;
來進行添加UITableViewController,再添加UITableView,這樣UIRefreshControl依舊由UITableViewController管理,但在其他ViewController中依舊可以使用。為了使用原生的下拉效果,你說我們容易嗎!
例子結構:
VC_view 繼承於 UIViewController
TV_table 繼承於 UITableViewController
VC_view 重點代碼
#pragma mark -#pragma mark Custom Methods/****************************************************************************** 函數名稱 : - (void)refreshData 函數描述 : 重新整理視圖資料 輸入參數 : N/A 輸出參數 : N/A 返回參數 : N/A 備忘資訊 : ******************************************************************************/- (void)refreshData{ self.pTV_table = [[TV_table alloc] initWithNibName:@"TV_table" bundle:nil]; self.pTV_table.view.frame = CGRectMake(0, 0, 320, 416); [_pV_main addSubview:_pTV_table.tableView];}
在UIViewController 添加別的Controller Or View 必須聲明全域變數
//引入UITableViewController,必須在需引入的控制器中聲明其全域變數,不能聲明為局部變數。@property (strong, nonatomic) TV_table *pTV_table;
這是ARC的特點
TV_table 重點代碼
/****************************************************************************** 函數名稱 : - (void)configRefreshControl 函數描述 : 配置RefreshControl 輸入參數 : N/A 輸出參數 : N/A 返回參數 : N/A 備忘資訊 : ******************************************************************************/- (void)configRefreshControl{ UIRefreshControl *refresh = [[UIRefreshControl alloc] init]; refresh.tintColor = [UIColor lightGrayColor]; refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉重新整理"]; [refresh addTarget:self action:@selector(refreshView) forControlEvents:UIControlEventValueChanged]; self.refreshControl = refresh;}
/****************************************************************************** 函數名稱 : - (void)handleData 函數描述 : 處理資料 輸入參數 : N/A 輸出參數 : N/A 返回參數 : N/A 備忘資訊 : ******************************************************************************/-(void)handleData{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"]; NSString *lastUpdated = [NSString stringWithFormat:@"最後更新於 %@", [formatter stringFromDate:[NSDate date]]]; self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:lastUpdated]; self.count++; [_pMuArr_dataSource insertObject:[NSString stringWithFormat:@"%d. %@,簡簡單單WZP感覺", _count, [formatter stringFromDate:[NSDate date]]] atIndex:0]; [self.refreshControl endRefreshing]; [self.tableView reloadData];}
/****************************************************************************** 函數名稱 : - (void)refreshView 函數描述 : 重新整理視圖 輸入參數 : N/A 輸出參數 : N/A 返回參數 : N/A 備忘資訊 : ******************************************************************************/-(void)refreshView{ if (self.refreshControl.refreshing) { self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"載入資料..."]; [self performSelector:@selector(handleData) withObject:nil afterDelay:2]; }}
PRJ_pullDownRefresh6.0.zip :http://ishare.iask.sina.com.cn/f/34851880.html