麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

Swift開發之使用UIRefreshControl實現下拉刷新數據及uirefreshcontrol使用

2020-03-09 17:53:06
字體:
來源:轉載
供稿:網友
本文給大家介紹使用UIRefreshControl實現下拉刷新數據,及UIRefreshControl的使用步驟,對本文感興趣的朋友一起學習吧
 

想要下拉刷新表格數據,上拉加載新數據,網上有許多第三方的實現類。

而如果僅僅需要實現下拉刷新數據的話,那么使用 UIRefreshControl 就足夠了,簡單有好用。

1.UIRefreshControl 的使用步驟:

(1)創建 UIRefreshControl,并設置文字,顏色等信息。
(2)將 UIRefreshControl 添加到tableview視圖中。
(3)給 UIRefreshControl 添加方法,當值改變的時候調用,用于數據請求刷新。
(4)請求數據確認完成之后,調用endRefreshing方法,關閉刷新。

2.效果圖如下

 Swift開發之使用UIRefreshControl實現下拉刷新數據及uirefreshcontrol使用

3.代碼如下

import UIKitclass ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { //新聞列表 @IBOutlet weak var newsTableView: UITableView! //新聞數組集合 var dataArray:[HanggeArticle] = [HanggeArticle]() //拉刷新控制器 var refreshControl = UIRefreshControl() override func viewDidLoad() {  super.viewDidLoad()  self.automaticallyAdjustsScrollViewInsets = false  //添加刷新  refreshControl.addTarget(self, action: "refreshData",   forControlEvents: UIControlEvents.ValueChanged)  refreshControl.attributedTitle = NSAttributedString(string: "下拉刷新數據")  newsTableView.addSubview(refreshControl)  refreshData() } // 刷新數據 func refreshData() {  //移除老數據  self.dataArray.removeAll()  //隨機添加條新數據(時間是當前時間)  for _ in ..< {   let atricle = HanggeArticle(title: "新聞標題/(Int(arcrandom()%))",    createDate: NSDate())   self.dataArray.append(atricle)  }  self.newsTableView.reloadData()  self.refreshControl.endRefreshing() } // 返回記錄數 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  return dataArray.count; } // 返回單元格內容 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)  -> UITableViewCell {  let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle,   reuseIdentifier: "myCell")  //設置單元格標題  let atricle: HanggeArticle = dataArray[indexPath.row] as HanggeArticle  cell.textLabel?.text = atricle.title  //設置單元格副標題  let dateFormatter = NSDateFormatter()  dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"  let str = dateFormatter.stringFromDate(atricle.createDate)  cell.detailTextLabel?.text = str  return cell; } override func didReceiveMemoryWarning() {  super.didReceiveMemoryWarning() }}//新聞結構體struct HanggeArticle { var title:String var createDate:NSDate}

PS:UIRefreshControl的使用

1、使用范圍

如果你裝了xcode_4.5_developer_preview,那么在UITableViewController.h文件中你會看到,UITableViewController里面有如下聲明,說明UITableViewController已經內置了UIRefreshControl控件

 

復制代碼代碼如下:

@property (nonatomic,retain) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(6_0);  

 

【注】:UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,運行時會得到如下錯誤提示:(即UIRefreshControl只能被UITableViewController管理)

2012-06-15 14:34:34.908 DevDivUIRefreshControl[722:10103] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UIRefreshControl may only be managed by a UITableViewController' *** First throw call stack: (0x186fd72 0x1066e51 0x186fb4b 0x55a559 0x57238 0x5d482 0x55ad2 0x2ebb 0xeb2a3 0xeb30e 0x10b7e9 0x10b624 0x109aef 0x10999c 0x107adc 0x1082c6 0xecf24 0xed1e0 0xee084 0x5645c 0x5cf31 0x55ad2 0x4131d 0x414f6 0x4168c 0x49871 0x10a90 0x1196a 0x222be 0x22f9f 0x153fd 0x17ccf39 0x17ccc10 0x17e5da5 0x17e5b12 0x1816b46 0x1815ed4 0x1815dab 0x1128f 0x12e71 0x29fd 0x2925) libc++abi.dylib: terminate called throwing an exception (lldb) 

2、如何使用

    a)初始化

如何在UITableViewController 中使用UIRefreshControl呢,在上面給出的代碼附件中,你可以很詳細的知道,這里介紹一下關鍵的部分:

self.refreshControl = [[UIRefreshControl alloc]init];  // self.refreshControl.tintColor = [UIColor blueColor];  self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];  [self.refreshControl addTarget:self action:@selector(RefreshViewControlEventValueChanged) forControlEvents:UIControlEventValueChanged]; 

如上面看到的代碼,雖然UITableViewController已經聲明了UIRefreshControl,但是貌似還沒有初始化,所以需要我們自己初始化。很神奇,初始化的時候并不需要給它指定frame,UITableViewController會為我們進行管理。遺憾的時目前只看到下拉刷新功能,上拉刷新還沒有,估計在最終版里面蘋果會考慮加入上拉刷新功能。
我們還可以給UIRefreshControl設置tintColor和attributedTitle。

 b)下拉刷新事件監聽

當用戶進行下拉刷新操作時,UIRefreshControl 會觸發一個UIControlEventValueChanged事件,通過監聽這個事件,我們就可以進行類似數據請求的操作了。如下代碼:

 

復制代碼代碼如下:

[self.refreshControl addTarget:self action:@selector(RefreshViewControlEventValueChanged)

 

c)進行數據請求

在示例中,為了演示數據請求,我簡單的做了一個延時處理,2秒鐘后,調用handleData

 

復制代碼代碼如下:

[self performSelector:@selector(handleData) withObject:nil afterDelay:2];  

 

在handleData里面,就表示已經請求到了數據,在此進行UI更新即可。也需要注意的是,我們調用UIRefreshControl 的endRefreshing方法,表示刷新結束,讓UIRefreshControl更新顯示。

- (void) handleData {  NSLog(@"refreshed");  [self.refreshControl endRefreshing];  self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];   self.count++;  [self.tableView reloadData]; } 

3、官方頭文件

下面是sdk中UIRefreshControl的聲明,想必看了下面的代碼,你已經知道如何使用了。

// // UIRefreshControl.h // UIKit // // Copyright 2012 Apple Inc. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIControl.h> #import <UIKit/UIKitDefines.h> NS_CLASS_AVAILABLE_IOS(6_0) @interface UIRefreshControl : UIControl /* The designated initializer  * This initializes a UIRefreshControl with a default height and width.  * Once assigned to a UITableViewController, the frame of the control is managed automatically.  * When a user has pulled-to-refresh, the UIRefreshControl fires its UIControlEventValueChanged event.  */ - (id)init; @property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; @property (nonatomic, retain) UIColor *tintColor UI_APPEARANCE_SELECTOR; @property (n


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久情爱网 | 91精品国| 亚洲码无人客一区二区三区 | 免费a级网站 | 国产在线免费 | 久久综合久久精品 | 一级电影中文字幕 | 中文字幕在线播放不卡 | 午夜视频在线看 | 亚洲一区 国产精品 | 麻豆视频在线观看 | 中文字幕综合在线观看 | 亚洲影院在线播放 | 亚洲成人福利网站 | 二区三区四区 | 国产一级在线看 | 免费a级毛片永久免费 | 激情宗合网 | 在线91视频| 叉逼视频 | 双性帝王调教跪撅打屁股 | 久久综合给合久久狠狠狠97色69 | 国产精品久久久久久久久久电影 | 男女一边摸一边做羞羞视频免费 | 国产精品高清一区 | 高清中文字幕在线 | 中文字幕在线永久视频 | 青青草成人av | 久草在线资源观看 | 久久久久av69精品 | 在线观看国产网站 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 久久国产免费视频 | 青青草免费观看完整版高清 | 久草网在线| a级毛片免费观看在线播放 日本aaa一级片 | 欧美囗交 | 欧产日产国产精品乱噜噜 | 88xx成人精品视频 | 伊久在线 | 欧美18—19sex性hd按摩 |