Ios 第一次调用setViewControllers时的状态上方的UITabBar

Ios 第一次调用setViewControllers时的状态上方的UITabBar,ios,objective-c,iphone,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Iphone,Uiviewcontroller,Uinavigationcontroller,我正在开发的应用程序可以在iOS 7 iPhone上运行。我有一个自定义导航,其中在UIViewController上有一个菜单,其中包含一些按钮和一个UINavigationController,该控制器充当菜单中显示的UIViewController内容的容器。类似facebook的滑动菜单 问题是我需要一个自定义UINavigationBar,所以我不能使用initWithRootViewController初始值设定项在UINavigationController上添加根UIViewCo

我正在开发的应用程序可以在iOS 7 iPhone上运行。我有一个自定义导航,其中在UIViewController上有一个菜单,其中包含一些按钮和一个UINavigationController,该控制器充当菜单中显示的UIViewController内容的容器。类似facebook的滑动菜单

问题是我需要一个自定义UINavigationBar,所以我不能使用initWithRootViewController初始值设定项在UINavigationController上添加根UIViewController,所以每当用户按下菜单按钮时,我必须使用SetViewController方法

问题是,首先,当菜单控制器加载时,我必须打开屏幕右侧的一个菜单UIViewController,每当我这样做时,导航栏将位于状态栏的顶部。如果我加载了另一个视图控制器,一切正常,导航栏将正常,如果我延迟显示第一个视图控制器0.1秒,导航栏将正常显示

在我设置根UIViewController之后,是否有方法刷新导航控制器,以便屏幕刷新或其他什么

self.navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CustomNavBar class] toolbarClass:nil];

[self.navigationController setViewControllers:@[viewController] animated:NO];

[self.view addSubview:self.navigationController.view];

[self addChildViewController:self.navigationController];

[self.navigationController didMoveToParentViewController:self];
我希望我清楚地知道我想要什么:如果没有,请道歉并添加评论,我会尽快澄清


谢谢。

好的,我找到了解决方案

似乎我不得不等到主视图控制器中调用viewDidLayoutSubviews方法,然后在其上添加导航控制器

这样看来,导航栏的位置很好