在iOS開發中,使用tableView的界面,大多會用到一個下拉刷新的的控件,第三方庫中,咱們通常會選擇比較好用的MJRefresh,其實,在iOS6以後,系統爲咱們提供了一個原生的刷新控件,使用起來很是方便,只是制定性不強,若是咱們沒有複雜的需求,使用UIRefreshControl也是不錯的一個選擇。atom
相對於UIViewController,UITableViewController只是在內部爲咱們封裝好了一個UITableView,而且遵照好了相關的協議,咱們只須要在其中實現方法便可。UITableViewController更多的方面之處是在於下面的這個屬性:spa
@property (nonatomic) BOOL clearsSelectionOnViewWillAppear;
這是一個bool值,設置爲yes後每當當前controller調用ViewWillAppare的時候,都會將cell的選中狀態取消,這十分有用,咱們在經過點擊cell跳轉界面後,pop回來不須要在手動修改cell的選中狀態了。code
除此以後,TableViewController中還封裝了這樣一個屬性:繼承
@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl;
這個UIRefreshControl類是iOS6以後引入的一個簡單的刷新控件,咱們若是設置了它,在tableView下拉的時候,系統會提供給咱們一個下拉刷新的效果。事件
這個類也十分簡單,經過簡單的設置能夠展示一個小巧的刷新效果,可是制定性不強,其中主要屬性以下:開發
//獲取刷新狀態 @property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; //設置控件顏色 @property (null_resettable, nonatomic, strong) UIColor *tintColor; //設置控件文字 @property (nullable, nonatomic, strong) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR; // 手動開始刷新 - (void)beginRefreshing NS_AVAILABLE_IOS(6_0); // 結束刷新 - (void)endRefreshing NS_AVAILABLE_IOS(6_0);
須要注意的是,UIRefreshControl是繼承於UIControl的,下拉喚醒刷新狀態後,會觸發UIControleEventValueChange事件,咱們能夠在其中進行刷新的數據邏輯操做。get
例如:it
- (void)viewDidLoad { [super viewDidLoad]; self.refreshControl = [[UIRefreshControl alloc]init]; self.refreshControl.tintColor = [UIColor greenColor]; self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新了~~"]; self.clearsSelectionOnViewWillAppear = YES; self.navigationItem.rightBarButtonItem = self.editButtonItem; [self.refreshControl addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged]; } -(void)change:(UIRefreshControl*)con{ self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"開始刷新了~~"]; }
效果以下:io
專一技術,熱愛生活,交流技術,也作朋友。table
——琿少 QQ羣:203317592