从标签栏控制器跳回导航控制器 - swift 4
Posted
技术标签:
【中文标题】从标签栏控制器跳回导航控制器 - swift 4【英文标题】:Jump back to navigation controller from tabbar controller - swift 4 【发布时间】:2018-09-15 16:51:33 【问题描述】:我有一个带有两个视图控制器的导航控制器,第一个 vc 是登录,第二个 vc 包含一些带有 tableView 的信息。从第二个 vc 它将导航到标签栏控制器(标签栏中的所有视图控制器都嵌入到导航控制器中)。现在,当我单击第一个选项卡时,它应该返回到第二个 vc。我尝试解雇,但它没有按预期工作。请提供一些启示。
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)
print("the selected index is : \(tabBar.items?.index(of: item))")
if tabBar.items?.index(of: item) == 0
self.dismiss(animated: true, completion: nil)
【问题讨论】:
请为每个标签栏项目添加导航控制器 问题中已经添加了(标签栏中的所有视图控制器都嵌入到导航控制器中) 如何从第二个视图控制器显示 tabBarController? 您是从初始导航控制器(不是从第二个视图控制器)打开标签栏控制器吗?如何(使用present
或push
)?
@lobstah 正在从第二个视图控制器呈现标签栏控制器(第二个 vc 嵌入在导航控制器中)
【参考方案1】:
有多种方法可以解决您的问题,但我想说它们都不是最先进的,因为 TabbarController 中的每个 Tab 都应该有自己的 NavigationController。 :)
也许这种方式适合你:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)
print("the selected index is : \(tabBar.items?.index(of: item))")
if tabBar.items?.index(of: item) == 0
let vc = YourSecondViewController() //or get it from your Storyboard
self.navigationController.setViewControllers([vc], animated: true)
更新
或者如果你推动你的控制器,你可以试试这个
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)
print("the selected index is : \(tabBar.items?.index(of: item))")
if tabBar.items?.index(of: item) == 0
self.navigationcontroller.popToRootViewController(animated: true)
【讨论】:
我试过了,但它又回到了第二个 vc。更准确地说,我的第 5 个选项卡是注销,所以当我单击该选项卡时,它应该转到作为初始控制器的登录控制器。以上是关于从标签栏控制器跳回导航控制器 - swift 4的主要内容,如果未能解决你的问题,请参考以下文章