在 viewDidAppear 中以编程方式更改为 Tabbar 选项卡视图

Changing to a Tabbar tab view programmatically in viewDidAppear

我有一个带有 5 个视图控制器的标签栏。在我的第三个视图控制器中,我有一个 table 视图及其 didSelect 方法,我正在使用以下代码以编程方式将我的 TabBar 选项卡更改为第一个选项卡。 tabBarController?.selectedViewController = tabBarController.childViewControllers[0] 在我的第一个视图控制器 childViewControllers[0] 中,有一个 viewDidAppear 方法,包括我的 ActivityIndicator 和一些 API 调用。当我使用上面的代码以编程方式更改我的选项卡栏时,第三个视图控制器停留在屏幕上,并且一旦 viewDidAppear 方法完成它就会切换,这会导致用户感到冻结。但是,当我直接按下第一个视图控制器时,第一个视图控制器出现,显示 Activity Indicator making API 调用。可能是什么原因,我该如何解决?

你能试试这个吗

tabBarController.selectedIndex = 0

当我更改 tabBarController?.selectedViewController = tabBarController.childViewControllers[0] 代码时

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

它运行良好,第一个视图控制器中的一些 API 调用导致冻结,所以我将它放在主线程中,感谢@Vinodh