TabViewController 在切换选项卡并呈现模态 ViewController 后为黑色 [重复]
Posted
技术标签:
【中文标题】TabViewController 在切换选项卡并呈现模态 ViewController 后为黑色 [重复]【英文标题】:TabViewController is black after switching Tabs and presenting modal ViewController [duplicate] 【发布时间】:2019-02-06 16:18:44 【问题描述】:我有一个 UITabBarController 并且需要一直显示 TabBar。 在代表 Tab 的 ViewController 中,我使用 childViewController.modalPresentationStyle = .overCurrentContext 呈现其他 Viewcontroller。 当我展示 ChildViewController (UIViewControllerA0,..) 时,我会展示一个导航栏。要返回,我关闭 currentChildViewController。
这工作正常,但以下步骤以黑屏结束。
-
在标签栏中选择 UIViewControllerA
在 UIViewControllerA 上单击某些内容并显示 (UIViewControllerA0)
UIViewControllerA0 与导航栏一起显示返回
切换到 Tab UIViewControllerC 或 B
切换到标签 UIViewControllerA -> 子 UIViewControllerA0 仍然可用
返回 NavigationBar 并关闭 UIViewControllerA0
UIViewControllerA 是黑色
切换到 UIViewControllerB 或 C 选项卡并再次返回 -> UIViewControllerA 显示正确
我的 UI 结构是
UITabBarController
|-UINavigationController
| --UIViewControllerA Tab
| --UIViewControllerA0
| --UIViewControllerA1
|
|--UINavigationController
| --UIViewControllerB Tab
| --UIViewControllerB0
| --UIViewControllerB1
|
|--UINavigationController
| --UIViewControllerC Tab
| --UIViewControllerC0
| --UIViewControllerC1
|
我已经尝试了几种presentationStyles,但是在呈现“ChildViewController”时我需要显示Tabbar。 我还尝试以某种方式重新加载 ViewController,但失败了,我认为这不是正确的方法。
是否有解决方案,或者无法使用这样的 TabNavigation?
亲切的问候
【问题讨论】:
所以...UIViewControllerA
是导航控制器的根 VC?在UIViewControllerA
你present(UIViewControllerA0)
中点击一个按钮并“显示一个导航栏”?意思是,你在视图中添加了一个导航栏,对吧? UIViewControllerA0
没有嵌入到导航控制器中?
啊 - 找到了您的解决方案。
UIViewControllerA,B 和 C 是 NavigationViewControllers 的 rootViewController。 NavigationViewControllers 是 TabViewController 的 viewControllers。是的,显示 NavigationBar 是在顶部返回的一种自定义 Navigationbar。 UIViewControllerA0 和其他的不是嵌入的,只是用 present(...) 我在答案中提到了它现在是如何完成的。我在一个未被接受的答案中可能重复的链接中发现了这种方法,但我现在赞成。
【参考方案1】:
好吧,这很奇怪,这是我的presentationContext和PresentationStyle的开始组合,但我再次尝试并将其设置回“开始”,现在它可以使用以下设置:
以 UIViewControllerA 为例,当呈现一个 Child 时
childViewController.modalPresentationStyle = .overCurrentContext
self.definesPresentationContext = true
self.present(childViewController, animated: true, completion: nil)
关闭我调用的 ChildViewController 时
childViewController.dismiss(animated: true)
我现在可以停留在选项卡上的 ChildViewController 中,在选项卡之间切换,甚至可以在其他选项卡上打开其他 ChildViewController,并且在关闭 ChildViewController 时会显示正确的 ViewController(UIViewControllerA、UIViewControllerB 或 UIViewControllerC)
我现在花了几个小时在这上面,现在它似乎很容易......
【讨论】:
以上是关于TabViewController 在切换选项卡并呈现模态 ViewController 后为黑色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 TabViewController 中创建 UIScrollView
UIAccelerometer, ViewControllers, and TabViewController, tabs 和 MotionBegan 之间的切换没有被调用