Ios 在ViewDidDisplay中以编程方式更改为选项卡视图

Ios 在ViewDidDisplay中以编程方式更改为选项卡视图,ios,swift,uitableview,uitabbarcontroller,Ios,Swift,Uitableview,Uitabbarcontroller,我有一个带有5个视图控制器的选项卡栏。在我的第三个视图控制器中,我有一个表视图和它的didSelect方法,我使用以下代码以编程方式将我的TabBar选项卡更改为第一个选项卡tabBarController?.selectedViewController=tabBarController.ChildViewController[0] 在我的第一个视图控制器childViewControllers[0]中,有一个viewdidappease方法,包括我的ActivityIndicator和一些AP

我有一个带有5个视图控制器的选项卡栏。在我的第三个视图控制器中,我有一个表视图和它的didSelect方法,我使用以下代码以编程方式将我的TabBar选项卡更改为第一个选项卡<代码>tabBarController?.selectedViewController=tabBarController.ChildViewController[0] 在我的第一个视图控制器
childViewControllers[0]
中,有一个viewdidappease方法,包括我的ActivityIndicator和一些API调用。当我使用上面的代码以编程方式更改选项卡栏时,第三个视图控制器保持在屏幕上,viewDidAppear方法完成后,它就会切换,这会给用户带来冻结的感觉。然而,当我直接按下first view controller(第一视图控制器)时,此时出现的第一视图控制器显示活动指示器进行API调用。原因可能是什么?我该如何解决

你能试试这个吗

tabBarController.selectedIndex = 0
你能试试这个吗

tabBarController.selectedIndex = 0

当我更改我的
tabBarController?时。selectedViewController=tabBarController.ChildViewController[0]
code

DispatchQueue.main.async {
tabBarController?.selectedViewController = tabBarController.childViewControllers[0]
}

它工作得很好,第一个视图控制器中的一些API调用导致冻结,因此我在更改我的
tabBarController?时将它放在了@Vinodh

主线程中。selectedViewController=tabBarController.childViewController[0]
code

DispatchQueue.main.async {
tabBarController?.selectedViewController = tabBarController.childViewControllers[0]
}

它工作得很好,第一个视图控制器中的一些API调用导致冻结,因此我将它放在主线程中,这要感谢@Vinodh

为API调用添加一些小延迟,这将修复冻结问题。您可以告诉我们,您如何更改视图控制器吗?冻结问题与API调用无关。正如我所说,当我按下选项卡栏中的第一个选项卡栏时,它显示了我的活动指示器并进行API调用。问题是,当我在didSelectRowAt函数中以编程方式切换选项卡栏时,它正在等待完成API调用@Vinodhc可以对API调用进行注释并尝试切换tabbar。如果UI未冻结,则UI切换和API调用在导致冻结的同一线程上工作。因此,切换选项卡时的延迟您可以使用此方法为调用添加延迟。在侦听器中调用didselect时,从第三个viewcontroller向第一个View发布通知添加API调用和延迟为API调用添加一些小延迟,这将解决冻结问题。您可以告诉我们,您如何更改视图控制器吗?冻结问题与API调用无关。正如我所说,当我按下选项卡栏中的第一个选项卡栏时,它显示了我的活动指示器并进行API调用。问题是,当我在didSelectRowAt函数中以编程方式切换选项卡栏时,它正在等待完成API调用@Vinodhc可以对API调用进行注释并尝试切换tabbar。如果UI未冻结,则UI切换和API调用在导致冻结的同一线程上工作。因此,切换选项卡时的延迟您可以使用此方法为调用添加延迟。在侦听器中调用didselect时,将第三个viewcontroller的通知发布到firstview添加API调用,并使用DelaySuperfore节省了我的时间!!我节省了时间!!