【发布时间】:2018-11-20 11:39:36
【问题描述】:
我有一个带有 5 个视图控制器的标签栏。在我的第三个视图控制器中,我有一个表格视图及其 didSelect 方法,我正在使用以下代码以编程方式将 TabBar 选项卡更改为第一个选项卡。 tabBarController?.selectedViewController = tabBarController.childViewControllers[0]
在我的第一个视图控制器 childViewControllers[0] 中,有 viewDidAppear 方法,包括我的 ActivityIndicator 和一些 API 调用。当我使用上面的代码以编程方式更改我的标签栏时,第三个视图控制器停留在屏幕上,并且一旦 viewDidAppear 方法完成,它就会切换,这会给用户带来冻结感。但是,当我直接按下第一个视图控制器时,第一个视图控制器出现,然后显示活动指示器进行 API 调用。可能是什么原因,我该如何解决?
【问题讨论】:
-
为 API 调用添加一些小延迟,这将解决冻结问题
-
您能告诉我们,您是如何更改视图控制器的吗?
-
冻结问题与 API 调用无关。正如我所说,当我从标签栏按下第一个标签栏时,它正在显示我的活动指示器并进行 API 调用。问题是当我在 didSelectRowAt 函数中以编程方式切换标签栏时,它正在等待完成 API 调用。 @Vinodh
-
能否评论API调用并尝试切换标签栏。如果 UI 未冻结,则 UI 切换和 API 调用在导致冻结的同一线程上工作。所以切换标签时延迟
-
你可以使用这个方法来增加调用stackoverflow.com/a/28821805/1142743的延迟。当在侦听器中调用 didselect 时将通知从第三个 viewcontroller 发布到 firstview 添加延迟的 API 调用
标签: ios swift uitableview uitabbarcontroller