如何代码启动其他故事板的UITabBarController并显示UITabBar?
解决UITabBar不显示的问题
嘿,我懂你碰到的情况了!你现在直接present了Test.storyboard里的子控制器AVC,但UITabBar是属于UITabBarController的专属组件——只有当你展示这个TabBarController本身时,它才会负责管理底部的TabBar以及子控制器的切换逻辑。直接present子VC的话,相当于绕过了TabBarController的管理,自然就看不到TabBar啦。
正确的解决步骤:
给
Test.storyboard里的UITabBarController设置Storyboard ID- 打开Test.storyboard,选中UITabBarController
- 在右侧属性面板的「Identity Inspector」中,给它设置一个唯一ID,比如
MainTabBarController
修改点击事件代码,改为实例化并present这个TabBarController:
@objc func startMatching(sender: UITapGestureRecognizer) { let storyBoard: UIStoryboard = UIStoryboard(name: "Test", bundle: nil) // 实例化TabBarController而非子VC let tabBarVC = storyBoard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController // 可选:如果需要默认选中AVC(假设AVC是第一个子控制器,index为0) tabBarVC.selectedIndex = 0 self.present(tabBarVC, animated: true, completion: nil) }
额外说明:
- 如果你的UITabBarController已经在storyboard里把
AVC设为初始显示的控制器,那selectedIndex = 0这一行可以省略,默认就会显示AVC - 这样present之后,TabBarController会正常管理它的所有子VC(AVC和BVC),底部的TabBar也会正常显示并支持切换功能
内容的提问来源于stack exchange,提问作者Noble Dinasaur
相关产品推荐
相关产品推荐

