【问题标题】:Dismiss current navigation controller when clicked tab bar单击选项卡栏时关闭当前导航控制器
【发布时间】:2018-01-20 18:17:33
【问题描述】:

我有一个标签栏控制器,在主视图控制器中我有一个导航控制器。

-标签栏控制器

-- HomeVC

--- VC1 导航推送 -> VC2

在 VC1 中导航栏没有隐藏,但在 VC2 中是隐藏的。我用 viewwillappear 和 viewwilldisappear 控制它。

    override func viewWillAppear(_ animated: Bool) {
    navigationController?.navigationBar.barStyle = .blackTranslucent
}
override func viewWillDisappear(_ animated: Bool) {
    navigationController?.navigationBar.isHidden = false
}

但是没有滑动就返回VC1,我的意思是点击标签栏homeVC图标隐藏导航栏。我想关闭或弹出当前视图控制器并返回 VC1。

【问题讨论】:

  • 所以你想在标签更改时返回标签的顶视图控制器?
  • 为什么,你可以在viewDidAppear() 的vc2 中隐藏navigaitonBar 并在vc1 中取消隐藏viewDidAppear() 试试这个,让我知道它的工作与否
  • 在 VC1 中,我在 viewWillAppear 中设置 navigationBar.isHidden = false 就完成了。
  • @Alper 点击标签栏时你想回到 Top viewcontroller VC1 对吗?
  • @Jaydeep 是的,转回 VC1 没有问题,但是当我转回 VC1 时,我想关闭 VC2 或者我不知道它是否会自动关闭

标签: swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

因此,您可以通过 popToRootViewControllerUINavigationController 执行此操作。你必须在UITabBarDelegatetabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) 方法中处理这个问题。

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    if let rootView = self.viewControllers!["Index of VC1 Controller"] as? UINavigationController {
        rootView.popToRootViewController(animated: false)
    }
}

【讨论】:

  • 好吧,我已经删除了 VC1 中的 viewWillAppear 并在标签栏控制器中编写了您的代码,我认为它有效:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多