美文网首页IOS
Swift-RefreshControl实现TableView的

Swift-RefreshControl实现TableView的

作者: meetweb | 来源:发表于2017-10-20 14:08 被阅读0次

    下拉刷新是很多APP常见功能之一。Swift本身提供了原生态的控件RefreshControl配合UI TableView实现下拉刷新的基本功能,使用简单。

    1.在storyboard新建一个View.

    2.新建一个Cocoa Touch Class ,名称为PullRefTabByRefreshControlViewController.swift

    3.在storyboard中将view的Class绑定为 PullRefTabByRefreshControlViewController

    4.在storyboard中将UITableView拖拉到View中 

    5.编写PullRefTabByRefreshControlViewController的代码


    class PullRefTabByRefreshControlViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{

    @IBOutlet weak var tableView: UITableView!

    //定义UIRefreshCotrol,此控件IOS自带不需要导入

    var refreshControl=UIRefreshControl()

    //新闻数组集合

    var dataArray:[Article] = [Article]()

    @IBAction func btnBack(_ sender: Any) {

    //self.presentedViewController?.dismiss(animated: true, completion: nil)

    self.presentingViewController!.dismiss(animated: true, completion: nil)

    }

    override func viewDidLoad() {

    super.viewDidLoad()

    self.automaticallyAdjustsScrollViewInsets = false

    tableView.delegate = self as UITableViewDelegate

    tableView.dataSource = self as UITableViewDataSource

    //添加刷新

    refreshControl.addTarget(self, action: #selector(refreshData),

    for: .valueChanged)

    refreshControl.attributedTitle = NSAttributedString(string: "下拉刷新数据")

    tableView.addSubview(refreshControl)

    refreshData1()

    // Do any additional setup after loading the view.

    }

    // 刷新数据

    func refreshData() {

    //移除老数据

    self.dataArray.removeAll()

    //随机添加5条新数据(时间是当前时间)

    for _ in 0..<10 {

    let atricle = Article(title: "新闻标题\(Int(arc4random()%1000))",

    createDate: Date())

    self.dataArray.append(atricle)

    }

    self.tableView.reloadData()

    self.refreshControl.endRefreshing()

    }

    // 刷新数据

    func refreshData1() {

    //移除老数据

    self.dataArray.removeAll()

    //随机添加5条新数据(时间是当前时间)

    for _ in 0..<5 {

    let atricle = Article(title: "新闻标题\(Int(arc4random()%1000))",

    createDate: Date())

    self.dataArray.append(atricle)

    }

    self.tableView.reloadData()

    self.refreshControl.endRefreshing()

    }

    override func didReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

    // Dispose of any resources that can be recreated.

    }

    // 返回记录数

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return dataArray.count;

    }

    // 返回单元格内容

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

    -> UITableViewCell {

    let cell = UITableViewCell(style: UITableViewCellStyle.subtitle,

    reuseIdentifier: "cell")

    //设置单元格标题

    let atricle: Article = dataArray[indexPath.row] as Article

    cell.textLabel?.text = atricle.title

    //设置单元格副标题

    let dateFormatter = DateFormatter()

    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

    let str = dateFormatter.string(from: atricle.createDate)

    cell.detailTextLabel?.text = str

    return cell

    }

    /*

    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    // Get the new view controller using segue.destinationViewController.

    // Pass the selected object to the new view controller.

    }

    */

    }

    struct Article {

    var title:String

    var createDate:Date

    }

    效果如下

    相关文章

      网友评论

        本文标题:Swift-RefreshControl实现TableView的

        本文链接:https://www.haomeiwen.com/subject/dkkgextx.html