如何在tabbar上方显示modalviewcontroller

时间:2012-07-29 08:50:24

标签: ios objective-c uitabbarcontroller presentmodalviewcontroller

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

[self presentModalViewController:modalView animated:YES]

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

4 个答案:

答案 0 :(得分:18)

尝试从UITabBarController提供模态视图:

[self.tabBarController presentModalViewController:modalView animated:YES];

答案 1 :(得分:3)

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

Jus切换回默认值以解决问题

答案 2 :(得分:3)

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

答案 3 :(得分: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。