[Swift通天遁地]二、表格表单-(5)实现表格下拉和上拉刷新效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10183045.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示如何给表格添加下拉和上拉刷新的功能。
首先确保在项目中已经安装了所需的第三方库。
点击【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 }