我目前遇到UITabBarController
和UINavigationControllers
的问题。
假设我的ViewControllers
中有2个UITabBar
:
MenuOne
MenuTwo
在MenuOne
上,我有一个按钮可以引至新的ViewController
; PageOne
。
如果我导航到第一个标签(MenuOne
),然后在将按钮推到PageOne
的情况下单击按钮,则标签栏仍然存在。如果我点击第二个选项卡(MenuTwo
),然后返回到MenuOne
,则会返回到PageOne
,在该视图层次结构中该位置不存在。
我的理解是,这是Apple的意图,也是UITabBarControllers
与UINavigationControllers
一起工作的方式,但是当我在MenuOne
的几个ViewController中时,我不想要我的用户可以浏览这些标签,而不会被重定向到初始的ViewController
。
为澄清起见,现在的过程是这样的:
MenuOne
> * 攻丝按钮 *> PageOne
> * 攻丝选项卡 *> MenuTwo
> * 攻丝标签 *> PageOne
这就是我想要的工作方式:
MenuOne
> * 攻丝按钮 *> PageOne
> * 攻丝选项卡 *> MenuTwo
> * 攻丝标签 *> MenuOne
有人知道我该怎么解决吗?
答案 0 :(得分:3)
您可以像这样创建自定义UITabBarController
:
class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
self.delegate = self
}
// when a controller is selected...
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if let vc = viewController as? UINavigationController {
// pop the navigation controller to root VC
vc.popToRootViewController(animated: false)
}
}
}
在情节提要中,将UITabBarController
的类设置为MyTabBarController
。