[Swift通天遁地]2、表格表單-(4)使用系統自帶的下拉刷新控件,製做表格的下拉刷新效果

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 }
相關文章
相關標籤/搜索