在我的应用程序中,我至少有十几个UIViewController
,其中一些显示导航栏,有些则不显示。 除了一个控制器之外,所有控制器上都运行良好。
我从另一个没有显示导航栏的屏幕导航到此屏幕。在这个问题上,我需要显示导航栏,所以在我的viewWillAppear
中我有以下代码:
[self.navigationController setNavigationBarHidden:NO animated:YES];
当我使用调试器单步执行代码时,我会浏览这一行,但是它只是被忽略,并且没有显示导航栏。 这似乎是模拟器和实际设备(iPhone 4S与iOS 5.1.1)上的问题。
我在这里错过了什么?
我猜,我又遇到了苹果"只是血腥地做"的事情。
除了在 viewWillAppear
方法中包含该行之外,我还将其添加到viewDidLoad
:
self.navigationController.navigationBarHidden = NO;
现在它按照我想要的方式工作。 有趣的是,如果我删除两行中的任何一行,它都不起作用;它仅适用于两条线。
无论如何,它现在都可以工作。
我也有类似的问题。事实证明,我离开的视图控制器[self.navigationController setNavigationBarHidden:NO animated:YES];
了它的viewWillDisappear
方法,这导致它在过渡时动画化,而不管viewWillAppear
中的内容如何
该行将更改工具栏的可见性,而不是导航栏。
也许你有这样的方法:
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:YES];
[super viewWillAppear:animated];
}
所以移动[超级...]线,把它改成这个(在 RootView Controller 和目标视图控制器中):
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
这对我有用。