我有标签栏,在视图“A”和“A”中我有导航控制器。所以我的导航控制器里面的“A”我称之为
[self presentModalViewController:modalView animated:YES]
但modalView显示在标签栏下。如何在标签栏上方显示它?
答案 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。