如何在选项卡栏上方显示模态视图控制器

9

我有一个标签栏,其中包括视图“A”,而在“A”中我有一个导航控制器。所以在我的导航控制器中,在“A”中我调用了

[self presentModalViewController:modalView animated:YES]

模态视图显示在选项卡栏下面,如何使其显示在选项卡栏上面?
4个回答

21

尝试从 UITabBarController 弹出模态视图:

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

6

在我的案例中,模态窗口具有透明的背景。我设置了modalPresentationStyle属性为.overFullScreen,并使其显示在选项卡栏上方,背景清晰可见。


3
在我的情况中,显示的视图控制器使用了 .modalPresentationStyle 的值为 UIModalPresentationStyle.CurrentContext,导致了 tab bar 重叠。
只需切换回默认值即可解决该问题。

嘿,你能解决这个问题吗?我也遇到了同样的问题。:| - Yash Bedi
@YashBedi,是的,我将模态呈现样式设置为默认样式。在我的情况下,模态呈现样式是由于意外更改了默认值。 - Tim

1
这是因为祖先视图控制器没有正确设置。 例如,想象一下:
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。

我使用了全局变量。谢谢。 - Dmitriy Kalachniuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接