无涯教程-Swift - 下拉刷新

174 阅读2分钟

拉动刷新已超出移动应用程序的要求。目的是为用户提供将其下拉以刷新表或集合视图的内容的便利。在iOS应用程序中,将刷新刷新功能添加到tableview或collectionview已简化。

添加刷新控件

Apple为无涯教程提供了UIRefreshControl类,它简化了添加提要刷新的操作。无涯教程需要做的第一件事是实例化UIRefreshControl类。

let refreshControl = UIRefreshControl()

在这里,无涯教程需要将此刷新控件添加到无涯教程的表视图中。无涯教程可以将tableview的refreshControl属性分配给该实例。但是,无涯教程必须注意到,在iOS 10之前,没有诸如refreshControl之类的属性。无涯教程必须将其作为子视图添加到tableview中。

if #available(iOS 10.0, *) {
    tableView.refreshControl = refreshControl
} 
else {
    tableView.addSubview(refreshControl)
}

现在,无涯教程希望无涯教程的应用程序在表视图刷新上执行一些操作。无涯教程可以将其添加为UirefReshControl实例的目标。说法如下。

refreshControl.addTarget(self, action: #selector(function(_:)), for: .valueChanged)

现在,无涯教程都设置了在无涯教程的应用程序中进行刷新函数。考虑以下示例,无涯教程将刷新添加到TableView。

例子

在这个简单的示例中,无涯教程将创建一个tableView并使用数组填充它。在刷新时,无涯教程将为该数组附加一些值并用阵列重新加载tableView。

在这里,无涯教程创建了一个表格视图,并在其中添加了一个原型单元。无涯教程在单元格内添加了一个标签来显示消息。下拉时会刷新tableview内容。

Pull to refresh functionality

ViewController.swift

import UIKit

class ViewController: UIViewController {

</span><span class="lit">@IBOutlet</span><span class="pln"> weak </span><span class="kwd">var</span><span class="pln"> tableView</span><span class="pun">:</span><span class="pln"> </span><span class="typ">UITableView</span><span class="pun">!</span><span class="pln">

</span><span class="kwd">let</span><span class="pln"> refreshControl </span><span class="pun">=</span><span class="pln"> </span><span class="typ">UIRefreshControl</span><span class="pun">()</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> arr </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Array</span><span class="pun">&lt;</span><span class="typ">String</span><span class="pun">&gt;()</span><span class="pln">

</span><span class="kwd">override</span><span class="pln"> func viewDidLoad</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">super</span><span class="pun">.</span><span class="pln">viewDidLoad</span><span class="pun">()</span><span class="pln">
   </span><span class="com">//Do any additional setup after loading the view.</span><span class="pln">
    tableView</span><span class="pun">.</span><span class="kwd">delegate</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">self</span><span class="pln">
    tableView</span><span class="pun">.</span><span class="pln">dataSource </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">self</span><span class="pln">
    arr </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Value 1"</span><span class="pun">,</span><span class="str">"Value 2"</span><span class="pun">,</span><span class="str">"Value 3"</span><span class="pun">,</span><span class="str">"Value 4"</span><span class="pun">]</span><span class="pln">
    tableView</span><span class="pun">.</span><span class="pln">refreshControl </span><span class="pun">=</span><span class="pln"> refreshControl
    refreshControl</span><span class="pun">.</span><span class="pln">addTarget</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> action</span><span class="pun">:</span><span class="pln"> </span><span class="com">#selector(refreshData), for: .valueChanged)</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="lit">@objc</span><span class="pln"> func refreshData</span><span class="pun">(){</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> </span><span class="lit">7.</span><span class="pun">.&lt;</span><span class="lit">12</span><span class="pun">{</span><span class="pln">
        arr</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"Value "</span><span class="pun">+</span><span class="pln">i</span><span class="pun">.</span><span class="pln">description</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    tableView</span><span class="pun">.</span><span class="pln">reloadData</span><span class="pun">()</span><span class="pln">
    refreshControl</span><span class="pun">.</span><span class="pln">endRefreshing</span><span class="pun">()</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

} extension ViewController : UITableViewDelegate{ func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } }

extension ViewController : UITableViewDataSource{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arr.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell") as! TableViewCell cell.lbl.text = arr[indexPath.row] return cell } }

参考链接

www.learnfk.com/ios/ios-pul…