选项卡栏中的视图控制器(将另一个vc称为弹出窗口)在切换选项卡时将从标签栏层次结构中删除

时间:2018-01-14 13:42:05

标签: ios swift uiviewcontroller uitabbarcontroller segue

我有一个嵌入在UITabBarController中的视图控制器。在其中一个UIViewControllers中,我有一个调用弹出视图控制器(pVC)的按钮。 pVC通过UISegue模式连接到视图控制器,其显示样式设置为overCurrentContext

工作正常。但是,我注意到当pVC显示并且我通过标签栏将视图控制器切换到另一个时,然后回到带有弹出窗口的那个,弹出窗口仍然存在,但背景为黑色。它看起来像这样:

enter image description here

我想,这是因为弹出窗口下方的视图已从视图层次结构中删除。在view hierarchy debugger中,我看到我的整个视图控制器被删除(而不仅仅是其子视图)。问题是,我不明白为什么当我返回到那个视图控制器时会发生这种情况(标签栏不是那样工作的?),以及为什么弹出窗口仍然存在(可能因为它不仅仅是一个视图,而是一个UIViewController)。我也想知道如何解决这个问题。

如果您能解释为什么会发生这种情况(背后会发生什么),以及如何解决这个问题,我将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果用户可以选择触摸

,请执行此操作
   // UITabBarControllerDelegate
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    print("Selected view controller")

  self.dismiss(animated: true, completion: nil)

}

如果手动

,则为此
   self.tabBarController?.selectedIndex = 0

   self.tabBarController(self.tabBarController!, didSelect: self) 

任何选项实现 UITabBarControllerDelegate

答案 1 :(得分:0)

将此代码放入popupVC:

tabBarController.tabBar.isUserInteractionEnabled = false
相关问题