繁体   English   中英

导航栏不显示

[英]Navigation bar doesn't show up

我有这个问题:我有一个视图控制器 (嵌入在导航控制器中),在执行操作后触发手动segue推新视图控制器 ,但是在新视图控制器中没有导航栏,因为在第一个控制器中我有实现了viewWillDisappear方法,如下所示:

StartViewController

- (void)viewWillDisappear:(BOOL)animated {
  // Hide the navigation bar just before the view disappear
  [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

以下是IBAction中手动segue的代码:

[self performSegueWithIdentifier:@"tutorialSegue" sender:self];

DestinationViewController

我试过这样的

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.
    [[self navigationController] setNavigationBarHidden:NO animated:NO];
}

但它不起作用,实际上在调试器中我注意到navigationcontroller等于nil ,我只是想不通原因。

如果你想让StartViewController隐藏导航栏,并使用DestinationViewController来显示它:将相应的代码添加到-(void)viewWillAppear:方法。

StartViewController:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

DestinationViewController:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[self navigationController] setNavigationBarHidden:NO animated:YES];
}

如果您希望两个视图控制器都有导航栏,只需删除包含setNavigationBarHidden:所有行setNavigationBarHidden:

这里的问题是你的viewDidLoad在你的viewWillDisappear之前被调用。 您必须先加载新视图,然后才能卸载父视图(可视)。 因此,您可以将导航栏设置为可见并再次隐藏它。

导航栏在嵌套在其中的视图之间是通用的。 除非子视图视图不需要,否则在视图消失时确实没有理由隐藏它。 如果您进一步解释了您尝试做的事情,我们可以提供更多帮助。 但同时如果你只是删除你的viewWillDisappear实现(至少你向我们展示的那样)你应该是好的。 否则,您可以在DestinationViewController的viewWillAppearviewDidAppear设置hidden属性为no (取决于调用顺序)。

另一个角度:在故事板编辑器中,我意外地重置了初始视图控制器(在属性窗格中),结果我丢失了导航栏。 只需将导航控制器重置为“是初始视图控制器”即可将其恢复。

如果您的代码看起来像

-(void)viewWillAppear:(BOOL)animated
{
   [self.navigationController setNavigationBarHidden:NO];
   [super viewWillAppear:YES];
}

改成它,

-(void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:YES];
   [self.navigationController setNavigationBarHidden:NO];
}

在“self.nav ...”之前键入“super viewWillappear ...”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM