Swift iOS开发:反向Segue后Tab Bar Controller底部Tab栏不显示
嘿,我来帮你搞定这个TabBar消失的问题!
问题根源
你现在用Segue直接跳回TabBarController,其实是重新创建了一个TabBarController实例,而不是回到原来那个已经存在的实例。新实例因为没有正确继承原有的导航层级关系,底部TabBar自然就不显示了。
解决方案一:用导航栈pop返回(推荐)
既然你的WebView页面是从表格VC(TabBar的子页面)push过来的,直接用导航控制器的pop方法返回就好,完全不用Segue:
在WebView所在的ViewController里,给返回按钮添加点击事件:
@IBAction func backButtonTapped(_ sender: UIButton) { // 直接回到上一个页面(表格VC),TabBar会自动恢复显示 self.navigationController?.popViewController(animated: true) }
解决方案二:用Unwind Segue返回(适合特殊场景)
如果你一定要用Segue来实现,得用Unwind Segue(专门用来回到导航栈中已存在的VC,而非新建实例),步骤如下:
- 打开你的TabBarController对应的Swift类,添加一个unwind方法:
@IBAction func unwindToTabBarController(segue: UIStoryboardSegue) { // 这里可以写返回后的逻辑,比如刷新数据 }
- 回到Storyboard,选中WebViewVC的返回按钮,按住Control键拖到WebViewVC顶部的「Exit」图标上,选择刚才创建的
unwindToTabBarController方法。 - 这样设置后,点击返回按钮就会回到原来的TabBarController实例,底部TabBar就能正常显示了。
内容的提问来源于stack exchange,提问作者Nimesh
相关产品推荐
相关产品推荐

