移动到新视图控制器时导航栏隐藏

Posted

技术标签:

【中文标题】移动到新视图控制器时导航栏隐藏【英文标题】:Navigation Bar hiding when moving to new view controller 【发布时间】:2014-01-03 12:02:08 【问题描述】:

当我试图通过按下当前视图控制器中的表格视图单元格从一个视图控制器移动到另一个视图控制器时。问题是当我这样做时:

FGTipViewController *vc = [[FGTipViewController alloc] initWithNibName:@"FGTipViewController" bundle:nil];

[self.navigationController pushViewController:vc animated:YES];

它将我带到新的视图控制器,但导航栏消失了。这仅适用于特定的视图控制器,对其他人也适用。我无法弄清楚这些课程之间的任何基本区别。这种问题的原因可能是什么?如果需要更多详细信息,请告诉我。

【问题讨论】:

我试过写 [self.navigationController setNavigationBarHidden:NO animated:NO];在 viewDidLoad 和 init 函数中,但无济于事。 你是否将导航栏隐藏在任何地方? 不。这就是它在其他类中工作的原因。 你检查过 viewWillAppear 和 viewWillDisappear 方法了吗? 尝试设置隐藏:否,当你要推送时..FGTipViewController *vc = [[FGTipViewController alloc] initWithNibName:@"FGTipViewController" bundle:nil]; [self.navigationController setNavigationBarHidden:NO 动画:NO]; [self.navigationController pushViewController:vc 动画:YES]; 【参考方案1】:

在推送视图时尝试这些行,

FGTipViewController *vc = [[FGTipViewController alloc] initWithNibName:@"FGTipViewController" bundle:nil];

[self.navigationController pushViewController:vc animated:YES];
[self.navigationController setNavigationBarHidden:NO animated:YES];

还有在 FPTipViewController 的 viewWillAppear 方法中,

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:NO animated:YES];

【讨论】:

【参考方案2】:

在 FGTipViewController 中,

-(void) viewWillAppear:(BOOL) animated 

    [super viewWillAppear];
    [[self navigationController] setNavigationBarHidden:NO animated:YES];


【讨论】:

【参考方案3】:

我这样做了,它有效。谢谢!

UINavigationBar* navBar = self.navigationController.navigationBar;

    if (navBar) 
        [UIView animateWithDuration:ANIMATION_DURATION animations:^
            [navBar setFrame:CGRectMake(0, 20, navBar.frame.size.width, navBar.frame.size.height)];
        ];
    

【讨论】:

以上是关于移动到新视图控制器时导航栏隐藏的主要内容,如果未能解决你的问题,请参考以下文章

导航栏在第二次和后续出现时隐藏在视图控制器上

将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域

隐藏导航栏将视图“向上”移动

隐藏导航栏会导致视图向上移动

如何在滚动时隐藏导航栏,除非在屏幕顶部

搜索显示控制器如何隐藏导航栏?