我正在开发的应用程序可以在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
方法在主视图控制器中被调用,然后在它上面添加导航控制器。