我有几个视图控制器,它们非常复杂。
我要做的是当我从ChatVC点击后退按钮时,我应该回到ChatRoomVC并仅显示底部的标签栏。
我尝试了下面的代码,但它显示的是黑屏,并且没有任何焦油条。
override func willMove(toParentViewController parent: UIViewController?) {
if parent == nil
{
var viewControllers = navigationController?.viewControllers
viewControllers?.removeLast(3)
navigationController?.setViewControllers(viewControllers!, animated: true)
self.navigationController?.isNavigationBarHidden = true
self.tabBarController?.tabBar.isHidden = false
}
}
答案 0 :(得分:0)
我猜你可以使用下面的hack来实现你想要的。在viewDidLoad
的{{1}}方法中执行:
ChatVC
这将删除介于override func viewDidLoad() {
super.viewDidLoad()
if let root = navigationController?.viewControllers.first {
navigationController?.viewControllers = [root, self]
}
}
和ChatVC
之间的中间视图控制器。现在弹回(例如使用标准后退按钮,或从屏幕左边缘轻扫)将直接跳回ChatRoomVC
。
修改强>
要在ChatRoomVC
中再次显示tabBar,请将其添加到ChatRoomVC
:
viewDidAppear
这样可以确保只要override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tabBarController?.tabBar.isHidden = false
}
出现在屏幕上,就会显示其tabBar。