切换标签并显示模式ViewController

时间:2019-02-06 16:18:45

标签: ios swift uiviewcontroller uitabbarcontroller uitabbar

我有一个UITabBarController,需要一直显示TabBar。 在代表选项卡的ViewController中,我使用childViewController.modalPresentationStyle = .overCurrentContext呈现其他Viewcontroller。 当我展示ChildViewController(UIViewControllerA0,..)时,我显示了一个Navigationbar。回去,我关闭了currentChildViewController。

这可以正常工作,但是以下步骤最终显示为黑色屏幕。

  1. 在标签栏中选择UIViewControllerA
  2. 单击UIViewControllerA上的内容并显示(UIViewControllerA0)
  3. UIViewControllerA0与导航栏一起显示回去
  4. 切换到Tab UIViewControllerC或B
  5. 切换到选项卡UIViewControllerA->子UIViewControllerA0仍然可用
  6. 返回NavigationBar并关闭UIViewControllerA0
  7. UIViewControllerA是黑色<---错误
  8. 切换到选项卡UIViewControllerB或C,然后再次返回-> UIViewControllerA显示正确

我的UIStructure是

UITabBarController
|-UINavigationController
|   --UIViewControllerA Tab
|      --UIViewControllerA0
|      --UIViewControllerA1
|   
|--UINavigationController
|   --UIViewControllerB Tab
|      --UIViewControllerB0
|      --UIViewControllerB1
|
|--UINavigationController
|   --UIViewControllerC Tab
|      --UIViewControllerC0
|      --UIViewControllerC1
|

我尝试了几种presentationStyles,但是在显示“ ChildViewController”时需要显示Tabbar。 我也尝试以某种方式重新加载ViewController,但是失败了,我认为这不是正确的方法。

有解决方案吗?还是无法使用这样的TabNavigation?

亲切的问候

1 个答案:

答案 0 :(得分:0)

好吧,这很奇怪,这是我的presentationContext和PresentationStyle的开始组合,但是我再次尝试并将其设置回“开始”,现在可以使用以下设置:

例如在UIViewControllerA中,当展示一个孩子时

childViewController.modalPresentationStyle = .overCurrentContext self.definesPresentationContext = true self.present(childViewController, animated: true, completion: nil)

关闭我调用的ChildViewController时

childViewController.dismiss(animated: true) {}

我现在可以留在选项卡上的ChildViewController中,在选项卡之间切换,甚至可以打开其他选项卡上的其他ChildViewControllers,并在关闭ChildViewController时显示正确的ViewController(UIViewControllerA,UIViewControllerB或UIViewControllerC)

我现在花了几个小时来做​​,现在看来就像它一样容易...