本文将演示如何给表格添加下拉和上拉刷新的功能。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
根据配置文件中的相关配置,安装第三方库。
1 platform :ios, '12.0'
2 use_frameworks!
3
4 target 'DemoApp' do
5 source 'https://github.com/CocoaPods/Specs.git'
6 pod 'PullToRefreshSwift'
7 end
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编写代码,给表格添加一个第三方刷新组件。
1 import UIKit
2 //在当前的类文件中,引入已经安装的第三方类库。
3 import PullToRefreshSwift
4
5 //使当前的视图控制器类,遵循:
6 //1.表格的数据源协议UITableViewDataSource
7 //2.代理协议UITableViewDelegate
8 //3.滚动视图代理协议UIScrollViewDelegate
9 class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate {
10
11 //添加一个属性,作为需要添加下拉刷新功能的表格视图
12 var tableView: UITableView!
13 //添加一个数组属性,作为表格视图的数据源
14 var languages = ["Java", "Objective-C", "Perl", "C", "C++", "Ruby"]
15
16 override func viewDidLoad() {
17 super.viewDidLoad()
18 // Do any additional setup after loading the view, typically from a nib.
19
20 //初始化一个指定显示区域的表格对象
21 self.tableView = UITableView(frame: CGRect(x: 0, y: 20, width: 320, height: 548))
22 //设置单元格之间分隔线的颜色为浅灰色
23 self.tableView.separatorColor = UIColor(red: 224/255,
24 green: 224/255,
25 blue: 224/255,
26 alpha: 1.0)
27
28 //设置表格对象的数据源为当前的视图控制器对象
29 self.tableView.dataSource = self
30 //设置表格对象的代理为当前的视图控制器对象
31 self.tableView.delegate = self
32 //将表格对象添加到根视图中
33 self.view.addSubview(self.tableView)
34
35 //给表格对象添加监听下拉刷新的功能
36 self.tableView.addPullRefresh { [weak self] in
37
38 //当用户对表格进行下拉刷新时,往数据源数组中添加一个新的元素,
39 //并将新元素添加到数组的首位
40 self?.languages.insert("Swift", at: 0)
41 //对表格进行数据内容的刷新
42 self?.tableView.reloadData()
43 //结束表格的下拉刷新动作
44 self?.tableView.stopPullRefreshEver()
45 }
46
47 //创建一个下拉刷新选项
48 var options = PullToRefreshOption()
49 //设置下拉样式的背景颜色为浅灰色
50 options.backgroundColor = UIColor.lightGray
51 //设置下拉刷新指示器的颜色为橙色
52 options.indicatorColor = .orange
53
54 //给表格添加向上拖拉刷新的功能
55 self.tableView.addPushRefresh(options: options) { [weak self] in
56
57 //当对表格数据进行刷新时,在表格数据源数组中的尾部,添加一个新的元素。
58 self?.languages.append("Swift")
59 //对表格进行数据内容的刷新
60 self?.tableView.reloadData()
61 //结束表格的上拉刷新动作
62 self?.tableView.stopPushRefreshEver()
63 }
64 }
65
66 //添加一个代理方法,用来设置表格的行数
67 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
68 {
69 //在此设置表格的长度等于数组的长度
70 return languages.count
71 }
72
73 //添加一个代理方法,用来初始化或复用表格中的单元格
74 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
75 {
76 //创建一个字符串常量,作为单元格的复用标识
77 let identifier = "reusedCell"
78 //根据复用标识,从表格中获得可以复用的单元格
79 var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
80
81 //如果没有可以复用的单元格
82 if(cell == nil)
83 {
84 //则初始化一个默认样式的单元格,并设置单元格的复用标识
85 cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: identifier)
86 }
87
88 //设置单元格的标题文字的字体大小为18
89 cell?.textLabel?.font = UIFont.italicSystemFont(ofSize: 18)
90 //设置标题文字的字体颜色
91 cell?.textLabel?.textColor = UIColor(red: 44/255, green: 62/255, blue: 88/255, alpha: 1.0)
92 //通过当前单元格的序号,从数组中获得相应的字符串,作为标题文字的内容
93 cell?.textLabel?.text = languages[(indexPath as NSIndexPath).row]
94
95 //最后返回设置好的单元格
96 return cell!
97 }
98
99 override func didReceiveMemoryWarning() {
100 super.didReceiveMemoryWarning()
101 // Dispose of any resources that can be recreated.
102 }
103 }