【问题标题】:Changing state of icons without waiting for the API response. (Mark as favorite functionality)无需等待 API 响应即可更改图标状态。 (标记为收藏功能)
【发布时间】:2018-07-18 20:54:14
【问题描述】:

我正在快速创建一个应用程序,我想在其中实现“标记为收藏”功能。基本上我有一个目前清晰的心形图标。当用户点击它时,它会变成橙色(就像 Instagram 中的心形图标(类似选项)的工作方式一样) 当我点击该图标时,一个呼叫会转到服务器,当它返回成功响应时,心形图标变为橙色。但是这个流程平均需要 3 到 4 秒,而在 Instagram、Facebook 或任何其他此类应用程序中,这件事会立即发生。此外,如果用户反复点击图标,喜欢的计数器会完美地递增/递减,但在我的应用程序中,如果我这样做,服务器调用(标记和取消标记图标的同时调用)将崩溃并且应用程序将崩溃。

我想通过以下方式来做:

  • 当用户点击图标时,立即更改其颜色,而无需 等待成功响应,假设成功 会有回应。但这根本不是一个好方法,因为如果 服务器无法处理请求(由于任何原因) 心脏的颜色会从透明变为橙色,然后再次 清晰,看起来会很奇怪。

  • 在响应来自服务器之前显示活动指示器 但同样,如果用户想要标记列表中的多个项目,他 将不得不看到指标并等待它们中的每一个,它 看起来会很笨拙。

所以我想要一个体面的解决方案来解决我的问题。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

  • User DispatchQueue.main.execute {// Change Your UI after response } 线程更改按钮的 UI。在主线程中检查响应后编写代码。
  • 详细说明您的解决方案将做什么,因为我是 iOS 新手
  • 您正在调用 API,所以它与后台线程一起工作。当 API 响应返回时,您需要更改 UI,因此 UI 始终与主队列一起使用。如果您在没有主队列的情况下更改它,则更改需要时间取决于应用性能。

标签: ios swift api favorites


【解决方案1】:

在请求开始时将图标设置为橙色的第一种方法对我来说似乎没问题,因为没有人喜欢等待喜欢被保存。看这个案例就像在聊天中发送消息一样。发送后立即在聊天中看到消息,如果发送失败则显示相应状态

【讨论】:

    猜你喜欢
    • 2020-02-25
    • 2012-11-18
    • 2020-04-18
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多