如何在UITableView中更新RSS数据?

精致的洋甘菊

我所拥有的:用SWIFT5编写的项目,它是rss阅读器(我使用标准XMLParser)。我用解析器中的数据填充单元格。为了更新单元格中的数据,我实现了UIRefreshControl并编写了objc方法,该方法包含与我用来获取数据相同的方法(fetchData-请参见代码),但是它不起作用。此外,启动应用程序时,仅调用一次此方法。当我关闭应用程序然后再打开时,数据不会更新...我该如何处理?

我想要的是:激活refreshControl时,应更新单元格中的数据

我做了什么:我声明了一个名为refreshControl的变量,将其添加到tableView并编写了与控件相关的方法#refresh

import UIKit

class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var table: UITableView!
    private let url = "my url"
    private var rssItems: [RSSItem]? {
        didSet {
            DispatchQueue.main.async {
                self.table.reloadData()
            }
        }
    }


    var refreshControl = UIRefreshControl()

    @objc func refresh (sender: UIRefreshControl) {
        fetchData()
        sender.endRefreshing()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        refreshControl.addTarget(self, action: #selector(refresh(sender:)), for: .valueChanged)
        self.table.refreshControl = refreshControl
        table.addSubview(refreshControl)

       fetchData()


    }

    private func fetchData() {
        let feedParser = FeedParser()
        feedParser.parseFeed(url: url) { (rssItems) in
            self.rssItems = rssItems
            DispatchQueue.main.async {
                self.table.reloadData()
            }
        }

    }
贾瓦德·阿里

获取数据并设置或添加刷新控件后,结束刷新

@objc func refresh (sender: UIRefreshControl) {
    fetchData()
}

override func viewDidLoad() {
    super.viewDidLoad()
    refreshControl.addTarget(self, action: #selector(refresh(sender:)), for: .valueChanged)
    self.table.refreshControl = refreshControl
   // table.addSubview(refreshControl)

   fetchData()
}

private func fetchData() {
    let feedParser = FeedParser()
    feedParser.parseFeed(url: url) { (rssItems) in
        self.rssItems = rssItems // as you are reloading table here
        DispatchQueue.main.async {
            refreshControl.endRefreshing()
          //  self.table.reloadData()
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在后台更新RSS feed

来自分类Dev

如何在UITableView中填充数据?迅速

来自分类Dev

如何在TableView中更新数据(Swift)

来自分类Dev

如何在MERN堆栈中更新数据

来自分类Dev

如何在Laravel 5.8中更新数据

来自分类Dev

如何在ISE中更新coe数据?

来自分类Dev

如何在php mysql中更新数据?

来自分类Dev

如何在laravel 5中更新数据?

来自分类Dev

如何在mongodb更新中设置数据

来自分类Dev

异步加载后更新 UITableView 中的数据

来自分类Dev

如何在AngularJS中更新json文件中的数据?

来自分类Dev

如何在Android中动态更新Spinner中的数据?

来自分类Dev

如何在MongoDB中更新嵌套数组中的数据

来自分类Dev

如何在表单中更新构造函数中的数据

来自分类Dev

使用vbscript从RSS更新数据

来自分类Dev

如何在Octave中更新绘图数据和颜色图?

来自分类Dev

如何在Pandas Python中更新数据框

来自分类Dev

如何在Codeigniter中更新表单数据

来自分类Dev

如何在wp8中更新数据文件

来自分类Dev

如何在SQL中更新相同的数据行?

来自分类Dev

如何在Matlab数据集中的行中更新几个值?

来自分类Dev

如何在mysql数据库中更新时间戳?

来自分类Dev

如何在SQLite数据库中更新值?

来自分类Dev

如何在JQuery中显示动态更新的数据

来自分类Dev

如何在laravel 5.2中更新数据库表

来自分类Dev

PyMongo:如何在MongoDB中批量更新巨大的JSON数据

来自分类Dev

如何在Laravel控制器中更新数据?

来自分类Dev

如何在猫鼬中更新子文档数据?

来自分类Dev

如何在SQL中更新特定列的数据