Ios 重新打开选项卡时,返回视图层次结构中的初始ViewController
我当前遇到Ios 重新打开选项卡时,返回视图层次结构中的初始ViewController,ios,swift,uinavigationcontroller,uitabbarcontroller,Ios,Swift,Uinavigationcontroller,Uitabbarcontroller,我当前遇到UITabBarControllers和UINavigationControllers的问题 假设我的uitabar中有2个ViewControllers: 美诺酮 菜单两 在MenuOne上,我有一个按钮,它指向一个新的ViewController第一页 如果我导航到第一个选项卡(MenuOne),然后单击按钮并按顺序切换到PageOne,选项卡栏将保留。如果我点击第二个选项卡(MenuTwo),然后返回到MenuOne,我将返回到PageOne,这是我在该视图层次结构中停止的位
UITabBarController
s和UINavigationControllers
的问题
假设我的uitabar
中有2个ViewControllers
:
- 美诺酮
- 菜单两
MenuOne
上,我有一个按钮,它指向一个新的ViewController
<代码>第一页
如果我导航到第一个选项卡(MenuOne
),然后单击按钮并按顺序切换到PageOne
,选项卡栏将保留。如果我点击第二个选项卡(MenuTwo
),然后返回到MenuOne
,我将返回到PageOne
,这是我在该视图层次结构中停止的位置
我的理解是,这是苹果的意图,这就是uitabarcontrollers
如何与UINavigationControllers
一起工作,但当我是MenuOne
中的几个ViewControllers时,我不希望我的用户在选项卡中导航,而不是被重定向到初始的ViewController
为了澄清,这就是现在的流程:
MenuOne
>*点击按钮*>PageOne
*点击选项卡>MenuTwo
>*点击选项卡>PageOne
这就是我希望它的工作方式:
MenuOne
>*点击按钮*>PageOne
*点击选项卡>MenuTwo
>*点击选项卡MenuOne
有人知道我如何解决这个问题吗?您可以创建一个自定义的
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
哇,这真是太容易了。非常感谢。