刷新 TableView 除了拉刷新

Posted

技术标签:

【中文标题】刷新 TableView 除了拉刷新【英文标题】:Refresh TableView except pull to refresh 【发布时间】:2016-06-06 07:19:10 【问题描述】:

我使用 Parse 保存数据,每次向服务器添加新数据时,TableView 不会刷新并获取新数据

除了拉刷新之外,还有什么方法可以刷新 TableView 吗?

【问题讨论】:

唯一的解决方法是使用推送通知来发送数据更新,这将随着用户数量的增长而变得不成比例。您现在可能想切换到 Firebase - 这将为您解决这个问题 使用定时器从服务器调用数据并在新数据到来后重新加载tableView。 【参考方案1】:

首先添加观察者方法,当你通知你。

NotificationCenter.default.post(name: Notification.Name("ReloadTableData"), object: nil)

在您使用的 tableview 的视图控制器中注册该观察者方法。

 NotificationCenter.default.addObserver(self, selector: #selector(self.methodOfReceivedNotification(notification:)), name: Notification.Name("ReloadTableData"), object: nil)

并创建一个函数并重新加载您的表格视图

这可能是您可能的解决方案,无需拉刷新即可重新加载。

【讨论】:

【参考方案2】:

你可以用这个:

self.tableView.reloadData()

每当用户返回应用或打开应用时。 可以在方法中添加

applicationWillEnterForeground

如果执行更新时用户仍在应用程序中,则使用推送通知。在方法中

appDidReceiveRemoteNotification 

重新加载数据。在收到任何推送通知之前,您必须注册远程通知和所有过程,但这是另一个问题。

【讨论】:

【参考方案3】:

首先将刷新控件添加到tableview。所以在ViewDidLoad中添加下面的代码。

    let refresh = UIRefreshControl()
    refresh.tintColor = UIColor.redColor()
    refresh.attributedTitle = NSAttributedString(string:"Loading..!!", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
    refresh.addTarget(self, action: "handleRefresh:", forControlEvents: UIControlEvents.ValueChanged)
    self.tableView.addSubview(refresh)
    self.tableView.sendSubviewToBack(refresh)

现在在您拉动刷新表格视图时调用该方法。

func handleRefresh(refreshControl : UIRefreshControl)
    self.tableView.reloadData()
    refreshControl.endRefreshing()

刷新控制:

【讨论】:

【参考方案4】:

在parse-server 上实施推送通知或使用 LiveQuery。

LiveQuery 允许您订阅您感兴趣的 Parse.Query。一旦订阅,服务器将在创建或更新与 Parse.Query 匹配的 Parse.Object 时实时通知客户端。

LiveQuery 已经支持ios

更多详情请查看超链接。

https://github.com/ParsePlatform/parse-server https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery https://github.com/ParsePlatform/ParseLiveQuery-iOS-OSX

【讨论】:

以上是关于刷新 TableView 除了拉刷新的主要内容,如果未能解决你的问题,请参考以下文章

在 tableView 上拉刷新

带有 UITableView 的 UIToolBar - 加载时 TableView 不刷新

使用MJRefresh遇到的一个问题,上拉刷新后tableview瞬间滑到最底部

如何在表格视图底部显示上拉刷新控件?

iOS仿支付宝首页的刷新布局效果

ios 设置tableview header不刷新