UITabBar在第一个setViewControllers调用的状态上面



我正在开发的应用程序可以在iOS 7 (iPhone)上运行。我有一个自定义导航,其中我有一个菜单上的UIViewController包含一些按钮和一个UINavigationController,从菜单中呈现的UIViewControllers的内容扮演容器的角色。(有点像facebook的滑动菜单)

事情是,我需要一个自定义的UINavigationBar,所以我不能使用initWithRootViewController初始化器在UINavigationController上添加根UIViewController,所以每当用户按下菜单按钮时,我必须使用setViewControllers方法。

问题是,首先,当菜单控制器加载时,我必须打开屏幕右侧的菜单UIViewControllers之一,每当我这样做时,导航栏将放在状态栏的顶部。如果我加载另一个视图控制器,一切都会恢复正常,导航栏也会正常,同样,如果我延迟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方法在主视图控制器中被调用,然后在它上面添加导航控制器。

最新更新