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

时间:2014-08-07 19:42:46

标签: ios objective-c iphone uiviewcontroller uinavigationcontroller

我正在开发的应用适用于iOS 7(iPhone)。我有一个自定义导航,我在UIViewController上有一个菜单,其中包含一些按钮和一个UINavigationController,它扮演容器的角色,用于从菜单中显示的UIViewControllers内容。 (类似于facebook滑动菜单)

问题是我需要自定义UINavigationBar,因此我无法使用initWithRootViewController初始值设定项在UIViewController上添加根UINavigationController所以我必须每当用户按下菜单按钮时使用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];

我希望我清楚我想要的东西:),如果没有,抱歉并添加评论,我尽量澄清。

感谢。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

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

这种方式似乎导航栏定位良好。