国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中UIRefreshControl的基本使用詳解

2019-10-21 18:41:18
字體:
來源:轉載
供稿:網友

簡介:

在展示一些經常需要更新的列表時,例如商品列表、聊天列表時,我們需要通過某種操作來刷新列表,最常用的便是下拉刷新的方法了,下拉刷新作為iOS的標準控件,即使不實用第三方庫也可以容易的實現,這篇文章將向大家講解如何使用UIRefreshControl實現下拉刷新功能。

UIRefreshControl是iOS6自帶的UITableView下拉刷新控件。iOS6中,UITableViewController已經內置了UIRefreshControl控件。UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,運行時會得到如下錯誤提示:(即UIRefreshControl只能被UITableViewController管理)  

1. 首先看一下UIRefreshControl的頭文件

NS_CLASS_AVAILABLE_IOS(6_0) @interface UIRefreshControl : UIControl - (instancetype)init; @property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; // 菊花顏色 @property (nonatomic, retain) UIColor *tintColor; // 下拉刷新文字描述 @property (nonatomic, retain) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR; // 開始刷新 - (void)beginRefreshing NS_AVAILABLE_IOS(6_0); // 結束刷新 - (void)endRefreshing NS_AVAILABLE_IOS(6_0); @end 

使用方法

     1.目前只對UITableviewController有用;

     2.目前只能下拉刷新,不能上拉加載;

     3.init或者viewDidLoad中創建UIRefreshControl,設置文字,顏色等信息;

     4.給UIRefreshControl添加方法,當值改變的時候調用,方法用于數據請求;

     5.該方法中請求數據確認完成之后,調用endRefreshing方法,關閉刷新;

2.示例Demo

#import <UIKit/UIKit.h> @interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> @property (nonatomic, retain) UITableView * tableView; @property (nonatomic, retain) UIRefreshControl * refreshControl; @property (nonatomic, retain) NSMutableArray * dataSource; @end 
#import <UIKit/UIKit.h> @interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> @property (nonatomic, retain) UITableView * tableView; @property (nonatomic, retain) UIRefreshControl * refreshControl; @property (nonatomic, retain) NSMutableArray * dataSource; @end #import "RefreshTableViewController.h" @interface RefreshTableViewController () @end  @implementation RefreshTableViewController - (void)viewDidLoad {  [super viewDidLoad];    _dataSource = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil nil];    // UITableView  _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];  _tableView.delegate = self;  _tableView.dataSource = self;  [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];  [self.view addSubview:_tableView];    // UIRefreshControl  _refreshControl = [[UIRefreshControl alloc] init];  _refreshControl.tintColor = [UIColor redColor];  _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];  [_refreshControl addTarget:self action:@selector(refreshControlAction) forControlEvents:UIControlEventValueChanged];  [_tableView addSubview:_refreshControl]; }   - (void) refreshControlAction {  if (self.refreshControl.refreshing) {   _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"加載中..."];      // 1. 遠程請求數據   [self requestAPIData];      // 2. 結束刷新   [self.refreshControl endRefreshing];      // 3. 重新加載數據   [self.tableView reloadData];  } }   - (void)requestAPIData {  // 模擬遠程請求所耗費的時間  [NSThread sleepForTimeInterval:2];  for (int i = 0; i < 5; i++) {   int value = (arc4random() % 100) + 1;   [self.dataSource addObject:[NSString stringWithFormat:@"%d", value]];  } }   - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {  return self.dataSource.count; }  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  static NSString * ID = @"UITableViewCell";  UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ID];  if (cell == nil) {   cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];  }    cell.textLabel.text = self.dataSource[indexPath.row];  return cell; }   - (void)didReceiveMemoryWarning {  [super didReceiveMemoryWarning]; } @end 

運行效果:

ios,uirefreshcontrol,refreshcontrol

關于UIRefreshControl在使用的一些踩坑指南,大家可以參考這篇文章:http://www.survivalescaperooms.com/kaifa/ios/309214.html

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陕西省| 什邡市| 增城市| 肇东市| 万载县| 元谋县| 资溪县| 甘肃省| 广安市| 伊春市| 南平市| 嘉兴市| 南通市| 万荣县| 汝南县| 仁化县| 利津县| 长沙县| 惠来县| 万州区| 华亭县| 郎溪县| 新安县| 南木林县| 彭阳县| 莒南县| 精河县| 江安县| 察哈| 五台县| 定州市| 和顺县| 蕲春县| 石台县| 道真| 奉节县| 抚顺市| 太康县| 玛沁县| 海宁市| 海宁市|