self.navigationController.navigationBar setHidden:视图控制器被换出时不起作用

Mik*_*uss 3 ios ios6

我在隐藏和显示UINavigationBar时遇到了一些奇怪的行为.

在我的viewWillAppear方法中,我称之为:

self.navigationController.navigationBar.hidden = YES;
Run Code Online (Sandbox Code Playgroud)

当用户按下按钮时,我正在调用它:

self.navigationController.navigationBar.hidden = NO;
Run Code Online (Sandbox Code Playgroud)

然后使用自定义UINavigationController的viewControllers属性交换当前视图控制器.

这工作正常,但如果我尝试在viewWillDisappear方法中使用相同的行显示navigationBar ,它不起作用.navigationBar仍然是隐藏的.

我可以viewWillDisappear使用以下方法显示/隐藏状态栏:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
Run Code Online (Sandbox Code Playgroud)

但显示/隐藏UINavigationBar不起作用!

编辑:此外,我尝试显示栏后self.navigationController.isNavigationBarHidden返回NO,viewWillDisappear但栏仍然隐藏.

任何帮助将不胜感激.谢谢!

小智 11

因为您已经将当前视图控制器交换出堆栈,self.navigationController所以可能nilviewWillDisappear调用时.

  • 那是我的愚蠢.你是对的,交换控制器使'self.navigationController`为零.我所要做的就是保持对self.navigationController的引用,然后在viewWillDisappear中调用`self.myLocalNavigationControllerReference.navigationBar.hidden = NO;`再次显示导航栏.谢谢! (3认同)