最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift開發(fā)之使用UIRefreshControl實現(xiàn)下拉刷新數(shù)據(jù)及uirefreshcontrol使用

 更新時間:2015年11月10日 11:39:22   投稿:mrr  
本文給大家介紹使用UIRefreshControl實現(xiàn)下拉刷新數(shù)據(jù),及UIRefreshControl的使用步驟,對本文感興趣的朋友一起學習吧

想要下拉刷新表格數(shù)據(jù),上拉加載新數(shù)據(jù),網(wǎng)上有許多第三方的實現(xiàn)類。

而如果僅僅需要實現(xiàn)下拉刷新數(shù)據(jù)的話,那么使用 UIRefreshControl 就足夠了,簡單有好用。

1.UIRefreshControl 的使用步驟:

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

2.效果圖如下

 

3.代碼如下

import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
 //新聞列表
 @IBOutlet weak var newsTableView: UITableView!
 //新聞數(shù)組集合
 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: "下拉刷新數(shù)據(jù)")
  newsTableView.addSubview(refreshControl)
  refreshData()
 }
 // 刷新數(shù)據(jù)
 func refreshData() {
  //移除老數(shù)據(jù)
  self.dataArray.removeAll()
  //隨機添加條新數(shù)據(jù)(時間是當前時間)
  for _ in ..< {
   let atricle = HanggeArticle(title: "新聞標題\(Int(arcrandom()%))",
    createDate: NSDate())
   self.dataArray.append(atricle)
  }
  self.newsTableView.reloadData()
  self.refreshControl.endRefreshing()
 }
 // 返回記錄數(shù)
 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已經(jīng)內置了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已經(jīng)聲明了UIRefreshControl,但是貌似還沒有初始化,所以需要我們自己初始化。很神奇,初始化的時候并不需要給它指定frame,UITableViewController會為我們進行管理。遺憾的時目前只看到下拉刷新功能,上拉刷新還沒有,估計在最終版里面蘋果會考慮加入上拉刷新功能。
我們還可以給UIRefreshControl設置tintColor和attributedTitle。

 b)下拉刷新事件監(jiān)聽

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

復制代碼 代碼如下:

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

c)進行數(shù)據(jù)請求

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

復制代碼 代碼如下:

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

在handleData里面,就表示已經(jīng)請求到了數(shù)據(jù),在此進行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的聲明,想必看了下面的代碼,你已經(jīng)知道如何使用了。

// 
// 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中非可選的可選值類型處理方法詳解

    Swift中非可選的可選值類型處理方法詳解

    Optional是Objective-C沒有的數(shù)據(jù)類型,是蘋果引入到Swift語言中的全新類型,它的特點就和它的名字一樣:可以有值,也可以沒有值,當它沒有值時,就是nil。下面這篇文章主要給大家介紹了關于Swift中非可選的可選值類型處理方法的相關資料,需要的朋友可以參考下。
    2017-11-11
  • 純swift實現(xiàn)ipad版簡單美團界面功能

    純swift實現(xiàn)ipad版簡單美團界面功能

    這篇文章主要為大家詳細介紹了純swift實現(xiàn)ipad版簡單美團界面功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Swift 編程語言入門教程

    Swift 編程語言入門教程

    今天在網(wǎng)上看到一篇非常好的Swift 編程語言入門教程,分享給大家
    2014-08-08
  • swift內存管理指針類型使用實例詳解

    swift內存管理指針類型使用實例詳解

    這篇文章主要為大家介紹了swift內存管理指針類型使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • swift中可選值?和!使用的方法示例

    swift中可選值?和!使用的方法示例

    這篇文章主要給大家介紹了關于swift中可選值?和!使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • swift4更新中所遇到的一些問題總結

    swift4更新中所遇到的一些問題總結

    這篇文章主要給大家介紹了關于在swift4更新中所遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • 如何利用SwiftUI實現(xiàn)可縮放的圖片預覽器

    如何利用SwiftUI實現(xiàn)可縮放的圖片預覽器

    這篇文章主要給大家介紹了關于如何利用SwiftUI實現(xiàn)可縮放圖片預覽器的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SwiftUI具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • Objective-C中的block與Swift中的尾隨閉包使用教程

    Objective-C中的block與Swift中的尾隨閉包使用教程

    Block是OC中的閉包,他和swift中的閉包有什么區(qū)別呢?下面這篇文章就來給大家介紹關于Objective-C中的block與Swift中的尾隨閉包使用的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • Swift實現(xiàn)可自定義分頁寬度的UIScrollView

    Swift實現(xiàn)可自定義分頁寬度的UIScrollView

    這篇文章主要為大家詳細介紹了Swift實現(xiàn)可自定義分頁寬度的UIScrollView,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 詳解Swift語言的while循環(huán)結構

    詳解Swift語言的while循環(huán)結構

    這篇文章主要介紹了Swift語言的while循環(huán)結構,包括do...while循環(huán)的用法,需要的朋友可以參考下
    2015-11-11

最新評論

独山县| 江都市| 板桥市| 政和县| 盘锦市| 应城市| 开原市| 黄浦区| 海门市| 马公市| 辽宁省| 吴忠市| 太白县| 舟山市| 安泽县| 宜君县| 凌源市| 无锡市| 南溪县| 武乡县| 亳州市| 闽清县| 宁波市| 石首市| 江北区| 武平县| 和龙市| 漳平市| 天柱县| 治县。| 方正县| 丘北县| 嘉定区| 丰城市| 灵台县| 屯昌县| 娄烦县| 汉寿县| 大同市| 安达市| 建德市|