★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-tdtddwpz-kd.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftgit
本文將演示如何使用系統自帶的下拉刷新控件,製做表格的下拉刷新效果。github
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】swift
如今開始編寫代碼,實現表格的下拉刷新功能。數組
1 import UIKit 2 3 //使當前的視圖控制器類,遵循表格的數據源協議UITableViewDataSource和代理協議UITableViewDelegate 4 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 5 6 //添加一個字符串數組的屬性,做爲表格的數據來源。 7 var months : Array<String>! 8 //添加一個刷新控件的屬性,做爲表格的刷新控件。 9 var refreshControl: UIRefreshControl! 10 //添加第三個屬性,做爲須要添加刷新組件的表格視圖 11 var tableView : UITableView! 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 // Do any additional setup after loading the view, typically from a nib. 16 17 //對字符串數組屬性進行初始化操做,設置表格須要顯示的數據 18 months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 19 20 //建立一個矩形區域,做爲表格視圖的顯示區域, 21 let rect = CGRect(x: 0, y: 40, width: 320, height: 518) 22 //初始化一個指定顯示區域的表格對象 23 tableView = UITableView(frame: rect) 24 25 //設置表格對象的數據源爲當前的視圖控制器對象 26 tableView.delegate = self 27 //設置表格對象的代理爲當前的視圖控制器對象 28 tableView.dataSource = self 29 30 //對刷新控件進行初始化操做 31 refreshControl = UIRefreshControl() 32 //給刷新控件綁定值變化的動做, 33 //當刷新控件被調用時,將執行指定的方法。 34 refreshControl.addTarget(self, 35 action: #selector(refreshCallback), 36 for: UIControlEvents.valueChanged) 37 //將刷新控件做爲子元素,添加到表格視圖中。 38 tableView.addSubview(refreshControl) 39 40 //將表格添加到視圖中。 41 self.view.addSubview(tableView) 42 } 43 44 //添加一個代理方法,用來設置表格的行數 45 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 46 { 47 //在此設置表格的行數爲數組的長度 48 return months.count 49 } 50 51 //添加一個代理方法,用來初始化或複用表格中的單元格 52 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 53 { 54 //建立一個字符串常量,做爲單元格的複用標識 55 let identifier = "reusedCell" 56 //根據複用標識,從表格中得到能夠複用的單元格 57 var cell = tableView.dequeueReusableCell(withIdentifier: identifier) 58 59 //若是沒有能夠複用的單元格 60 if(cell == nil) 61 { 62 //則初始化一個默認樣式的單元格,並設置單元格的複用標識 63 cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: identifier) 64 } 65 66 //得到當前單元格的行數 67 let rowNum = (indexPath as NSIndexPath).row 68 //從數組中得到相應的字符串,以設置單元格的標題內容, 69 cell?.textLabel?.text = months[rowNum] 70 71 //最後返回設置好的單元格對象。 72 return cell! 73 } 74 75 //添加一個方法,用來修改表格的數據源 76 func appendData() 77 { 78 //往數組中添加一個新的元素, 79 //並將新元素放在數組的首位。 80 months.insert("Honeymoon", at: 0) 81 } 82 83 //添加一個方法,用來響應刷新控件的交互事件 84 func refreshCallback() 85 { 86 //當刷新控件被成功調用以後, 87 //增長表格的數據源 88 appendData() 89 //讓表格對象刷新數據源 90 tableView.reloadData() 91 //終止刷新控件的刷新動做。 92 refreshControl.endRefreshing() 93 } 94 95 override func didReceiveMemoryWarning() { 96 super.didReceiveMemoryWarning() 97 // Dispose of any resources that can be recreated. 98 } 99 }