如何在没有导航栏的 View Controller 内使用 Nav 推送 UIViewController
Posted
技术标签:
【中文标题】如何在没有导航栏的 View Controller 内使用 Nav 推送 UIViewController【英文标题】:How to push UIViewController with Nav while inside View Controller without nav bar 【发布时间】:2011-12-27 09:28:45 【问题描述】:我正在模态显示 UINavigationController。 对于根视图控制器,我不想显示导航栏。
但是对于更深层次的控制器,我确实想展示它。
我想在我的根视图控制器中做这样的事情:
-(void) viewWillAppear:(BOOL)animated
[self.navigationController.navigationBar setHidden:YES];
-(void) viewWillDisappear:(BOOL)animated
[self.navigationController.navigationBar setHidden:NO];
但是,当我从第一个视图控制器返回到根视图控制器时,这会出现问题。 导航栏在按下“后退”按钮后消失(在第一个视图控制器内,留下空白区域),而不仅仅是在 rootViewController 完成加载之后。 (显然是因为我的代码使用了 viewWillAppear)
有解决办法吗?
我唯一想到的就是永久隐藏导航栏,并手动将导航栏添加到堆栈中的每个视图控制器。 我希望不要这样做,因为它需要做更多的工作,而且,我想使用箭头形状的按钮,为此我必须创建自定义图像。
感谢任何建议。
【问题讨论】:
可以发个截图吗?你的第二个视图控制器是全屏的吗?我没有 100% 得到你的问题。 【参考方案1】:这应该可以,我没有测试过,但理论上应该可以:
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
【讨论】:
以上是关于如何在没有导航栏的 View Controller 内使用 Nav 推送 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
presentViewController显示方式的窗口,没有导航栏的解决方法
如何在 Xcode Interface Builder 中将导航项添加到 Table View Controller(带有静态单元格)?