如何在tabbar上方显示modalviewcontroller

Dmi*_*iuk 8 objective-c uitabbarcontroller presentmodalviewcontroller ios

我有标签栏,在视图"A"和"A"我有导航控制器.所以我的导航控制器里面的"A"我叫了

[self presentModalViewController:modalView animated:YES]
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*nov 18

尝试从UITabBarController以下方式呈现模态视图:

[self.tabBarController presentModalViewController:modalView animated:YES];
Run Code Online (Sandbox Code Playgroud)


QHu*_*_IT 5

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


Geo*_*rge 1

造成这种情况的原因是祖先viewController没有正确设置。例如想象一下:

UIViewController * myController = ... // a view controller without a proper ancestor
Run Code Online (Sandbox Code Playgroud)

现在:

myController.tabBarController == nil
Run Code Online (Sandbox Code Playgroud)

所以:

[myController presentModalViewController:otherController];
Run Code Online (Sandbox Code Playgroud)

将会失败(通过显示在选项卡栏下方)。解决方法是通过以下方式将 myController 添加到其祖先

[parentController addChildViewController:myController];
Run Code Online (Sandbox Code Playgroud)

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