【问题标题】:iOS: UITableViewController - when to refresh (design)?iOS:UITableViewController - 何时刷新(设计)?
【发布时间】:2012-07-02 01:19:45
【问题描述】:

我有一个显示消息列表的 UITableViewController。我使用 CoreData 和 NSFetchedResultsController 来兑现/存储与单元格对应的每个对象。我想知道何时刷新表以与服务器同步。一方面,我只能手动刷新,但我希望表格视图自动同步。另一方面,每次表格视图出现时我都可以刷新,但这似乎很浪费。 在这种情况下,正常的方法是什么?每次收到推送时使用推送通知并刷新?但是如果用户禁用了推送通知呢?

【问题讨论】:

    标签: ios notifications refresh uitableview push


    【解决方案1】:

    我假设当您说“服务器”时,您指的是 Internet 上的某个远程服务器。在这种情况下,如果服务器上存在用户需要/想要的频繁更新,则在 tableview 出现时刷新并不是不合理的(或者更准确地说,询问服务器以查看是否需要刷新并且只下载更新而不是而不是重新下载所有内容,并且仅在有新数据时才刷新……这取决于您服务器的性质)。但是,如果您执行这种逻辑,您将希望异步执行,因此在您在后台检查更新时不会延迟用户体验。但是,如果用户很有可能需要/想要更新的数据,请省去点击刷新按钮的工作。想想邮件程序:您想查看现有的电子邮件,但您可能希望程序在每次拉起“电子邮件列表”表格视图时检查电子邮件。

    如果服务器更新不频繁和/或如果您的服务器协议有点慢,您可能可以混合使用“仅当最后一次刷新时间超过 x 分钟前才出现 tableview 时刷新”。如果您对数据刷新进行这种条件检查,那么您可能必须提供一个 UI 以允许用户手动刷新、查看上次刷新发生的时间等。想想不太可能出现的公司新闻提要是大量的每分钟更新,而是每天或每周更新。

    此外,我之前的一些 cmets 暗示,您可能希望确保在后台进行服务器更新,并且可能还主动进行。 (例如,您可能希望在应用程序启动后立即在后台启动更新服务器数据的检查,以减少用户进入特定表格视图时的延迟)。或者您可能会在用户仍在相关表格视图上时触发异步更新检查(例如,您正在查看正在进行的体育赛事的得分摘要)。这完全取决于服务器数据更改的性质、您可以访问的服务器接口类型以及用户的期望。无论如何,如果可以阻止的话,永远不要用烦人的微调器或类似的东西来阻止用户界面。

    因此,很遗憾,您的问题没有简单的答案,因为答案至少取决于 (a) 服务器可以多快响应有关数据更新存在的查询,然后下载这些更新; (b) 服务器数据更改的频率; (c) 用户寻找更新数据的可能性有多大(没有用户感到不得不一直点击刷新按钮的 UX)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      相关资源
      最近更新 更多