我有标签栏,在视图“A”中,在“A”中我有导航控制器。所以在“A”中我的导航控制器里面我叫
[self presentModalViewController:modalView animated:YES]
但 modalView 显示在标签栏下。如何在标签栏上方显示它?
我有标签栏,在视图“A”中,在“A”中我有导航控制器。所以在“A”中我的导航控制器里面我叫
[self presentModalViewController:modalView animated:YES]
但 modalView 显示在标签栏下。如何在标签栏上方显示它?
尝试从以下位置呈现模态视图UITabBarController
:
[self.tabBarController presentModalViewController:modalView animated:YES];
我的情况,模态有一个透明的背景,我设置modalPresentationStyle
是.overFullScreen
,它显示在标签栏上方,背景清晰。
在我的情况下,呈现的视图控制器有UIModalPresentationStyle.CurrentContext
at .modalPresentationStyle
,这使得tab bar
重叠
只需切换回默认值即可解决问题
其原因是未正确设置祖先 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。