【发布时间】: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 始终与主队列一起使用。如果您在没有主队列的情况下更改它,则更改需要时间取决于应用性能。