UITabBar 在第一次 setViewControllers 调用上的状态

Posted

技术标签:

【中文标题】UITabBar 在第一次 setViewControllers 调用上的状态【英文标题】:UITabBar above the status on first setViewControllers call 【发布时间】:2014-08-07 19:42:46 【问题描述】:

我正在开发的应用程序可在 ios 7 (iPhone) 上运行。我有一个自定义导航,其中我在UIViewController 上有一个菜单,其中包含一些按钮和一个UINavigationController,它充当从菜单呈现的UIViewControllers 内容的容器。 (类似于 facebook 滑动菜单)

问题是我需要一个自定义的UINavigationBar,所以我不能使用initWithRootViewController 初始化器在UINavigationController 上添加根UIViewController,所以每当用户按下a 时我都必须使用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】:

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

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

这样看来,导航栏定位不错。

【讨论】:

以上是关于UITabBar 在第一次 setViewControllers 调用上的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用 UITabBar

为啥我的 UITabBar 在载入屏幕加载后消失?

UItabBar 改变视图控制器

选择 UITabBar 项时打开另一个应用程序

UITabBar 中的 UICollectionView 在首次加载时显示错误的位置

UITabBar的隐藏