【问题标题】:swift segue new viewcontroller stuck when other tasks loading on backgroundswift segue new viewcontroller 在后台加载其他任务时卡住
【发布时间】:2019-12-31 17:05:42
【问题描述】:

目前,我有一个基于 API 加载的 UItableview。当点击一个单元格时,它会继续(显示例如推送)到另一个视图控制器。它在第一次 API 调用后显示所有单元格,然后调用其他 API 并加载其他数据(这需要一段时间并且还大量使用 cpu),但加载时滚动似乎很流畅。 但是,当没有完全加载时,如果我单击一个单元格并弹出另一个 viewController,整个应用程序会冻结片刻。 (新的 viewController 显示了所有的内容,只是没有响应) 有解决方案吗? 我现在能想到的是通过一次加载更少的单元来减少 CPU 负载。

【问题讨论】:

  • 欢迎来到 SO。请阅读How to Ask 并提供一些代码(minimal reproducible example)来分享您正在做的事情。
  • 您可能没有正确使用主线程。加载数据的密集调用应该在后台线程上完成,并且只在主线程上更新 UI。

标签: ios swift uitableview segue


【解决方案1】:

通常你不会想要这样做:

“加载其他数据(这需要一段时间并且还大量使用cpu)”

更好的解决方案是不调用您的第二次调用来获取所有数据,而只获取显示在您正在继续的下一个视图控制器上所需的数据。通常通过在 API 调用中传递 ID 来完成。因此,在您的 tableviews didSelectRowAt 上,您将进行 api 调用以获取特定于下一个屏幕所需的数据,然后进行 segue。

如果由于服务器端的限制而无法做到这一点,那么您将需要链接前两个调用。意思是在您拥有所有数据之前,甚至不显示表格视图单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多