9

我有标签栏,在视图“A”中,在“A”中我有导航控制器。所以在“A”中我的导航控制器里面我叫

[self presentModalViewController:modalView animated:YES]

但 modalView 显示在标签栏下。如何在标签栏上方显示它?

4

4 回答 4

21

尝试从以下位置呈现模态视图UITabBarController

[self.tabBarController presentModalViewController:modalView animated:YES];
于 2012-07-29T09:12:29.423 回答
5

我的情况,模态有一个透明的背景,我设置modalPresentationStyle.overFullScreen,它显示在标签栏上方,背景清晰。

于 2018-05-21T07:04:40.240 回答
3

在我的情况下,呈现的视图控制器有UIModalPresentationStyle.CurrentContextat .modalPresentationStyle,这使得tab bar重叠

只需切换回默认值即可解决问题

于 2016-05-06T16:25:43.223 回答
1

其原因是未正确设置祖先 viewController。例如想象:

UIViewController * myController = ... // a view controller without a proper ancestor

现在:

myController.tabBarController == nil

所以:

[myController presentModalViewController:otherController];

将失败(通过显示在标签栏下)。解决方法是通过将 myController 添加到其祖先

[parentController addChildViewController:myController];

现在,parentController必须以相同的方式添加到另一个控制器,依此类推,直到根是您的 tabController。这仅在 iOS 5+ 中可用。如果为 iOS 4 或更早版本构建,则必须通过确保将所有控制器直接添加到 UINav 或 UITab 控制器来解决此问题。如果这不可能,您将不得不通过全局变量访问 UITabBarController。

于 2012-09-12T19:14:12.060 回答