zoukankan      html  css  js  c++  java
  • [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10182985.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    目录:[Swift]通天遁地Swift

    本文将演示如何使用系统自带的下拉刷新控件,制作表格的下拉刷新效果。

    在项目导航区,打开视图控制器的代码文件【ViewController.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,  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 }
  • 相关阅读:
    同步请求和异步请求的区别
    Ajax初步理解
    ajax的GET和POST请求
    What's this?(js)
    rxjs
    Angular7_获取异步方法里面的数据
    Angular7_人员登记系统
    Angular7
    特殊操作符
    Oracle 表操作
  • 原文地址:https://www.cnblogs.com/strengthen/p/10182985.html
Copyright © 2011-2022 走看看