You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Storyboard ID在UITabBarController中展示指定ViewController

解决UITabBarController无法显示的问题

你现在的核心问题是直接把目标ViewController设成了根控制器,完全没有加载UITabBarController,自然看不到底部的TabBar了。正确的思路应该是先加载UITabBarController,再让它选中你想要展示的那个子ViewController,最后把TabBarController设为根控制器。

具体代码实现

假设你的UITabBarController在Storyboard里的ID是MainTabBar(需要你根据自己的实际配置修改),并且它的viewControllers数组已经包含了ID为stats_view的ViewController,那么可以这样写:

// 1. 从Storyboard加载UITabBarController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let tabBarController = storyboard.instantiateViewController(withIdentifier: "MainTabBar") as? UITabBarController else {
    fatalError("无法初始化UITabBarController,请检查Storyboard ID是否正确")
}

// 2. 两种方式选中目标ViewController
// 方式一:通过索引(假设stats_view是TabBar里的第2个控制器,索引从0开始)
tabBarController.selectedIndex = 1

// 方式二:通过遍历找到对应的VC(更灵活,不用记索引)
if let statsVC = tabBarController.viewControllers?.first(where: { $0.restorationIdentifier == "stats_view" }) {
    tabBarController.selectedViewController = statsVC
}

// 3. 将TabBarController设为根控制器
window?.rootViewController = tabBarController
window?.makeKeyAndVisible()

关键注意事项

  • 确保你的UITabBarController在Storyboard里已经正确设置了Storyboard ID,并且它的viewControllers列表里确实包含了stats_view这个ViewController。
  • 如果你是用遍历的方式找VC,要确认stats_view的ViewController的restorationIdentifier和你代码里写的一致(它和Storyboard ID默认是同步的,但也可以单独设置)。

内容的提问来源于stack exchange,提问作者M. Holm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:09:27