我有一个很好的UINavigationController。每个视图控制器都有自己的按钮,可以将堆栈弹回到其根目录,这也非常棒。不过,我也想通过按下标签栏上的按钮(显然是在导航堆栈外的完全不同的类中)将堆栈弹回到其根目录。UINavigationController popToRootViewController方法不能由委托调用吗?
因此,我在标签栏类中创建了一个委托,该委托在堆栈顶部找到视图控制器,并调用该视图控制器中的方法将堆栈弹回到根目录。我向控制台打印了一些内容,以验证委托设置是否正确。一切正常,因为它应该,除了按下标签栏不会弹出回到其根。
想法?
这是在一个UINavigationController堆
class BlankViewController202: UIViewController, MainContainerViewControllerDelegate {
// pop to root
func popToRoot() {
self.navigationController?.popToRootViewController(animated: true)
print("success")
}
}
的顶视图控制器当此功能上面从该视图控制器中调用(当用户按下视图控制器本身上的按钮),它弹出堆栈。但是当这个相同的确切方法被标签栏中的委托调用时,它不会弹出堆栈(但它会打印到控制台,所以我知道它正确地连接起来)。
这是其中按钮位于标签栏的是,当按下应该弹出栈返回到其根
protocol MainContainerViewControllerDelegate {
func popToRoot()
}
class MainContainerViewController: UIViewController {
func moveToTab3(sender: UIButton!) {
// ...
let banana = BlankViewController202()
self.delegate = banana
delegate?.popToRoot()
}
}
因此......你有一个TabBarController ......其中一个Tabs包含一个NavigationController ......当你点击第三个Tab时,你想让NavController(如果它是当前选项卡?)弹出到其根目录,并且你想要显示第三个标签......这听起来是对的吗? – DonMag