[Swift通天遁地]二、表格表单,5实现表格下拉和上拉刷新效果

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)

➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/

➤GitHub地址:https://github.com/strengthen/LeetCode

➤原文地址:

➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。

➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

目录:[Swift]通天遁地Swift

本文将演示如何给表格添加下拉和上拉刷新的功能。

首先确保在项目中已经安装了所需的第三方库。

点击【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 }