2011-08-23 75 views
4

我想要隐藏UINavigationBar自动加载导航项目的第一个视图,我想知道如何使这项工作。如何隐藏我的第一个视图的UINavigationBar

我试图做这样的

//RootViewController.m

#import "mydelegate.h" //-- this is where the view controller is initialized 

//... 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    navigationController *navController = [[navigationController alloc] init]; 
    [navigationController setNavigationBarHidden:YES animated:animated]; 
} 

//..... 

但是我得到错误,因为我想我没有从委托文件调用navigationController跨越正常,或者这是只是不可能像你从另一个班级来的方法那样称呼它。

任何帮助将不胜感激。

回答

6

您是否正在访问UINavicationController的正确实例? 您可以通过self.navigationController从已添加到其堆栈的任何UIViewController访问UINavigationController。

否则,也许这会帮助: iPhone hide Navigation Bar only on first page

+0

啊对!这工作:)谢谢,我需要阅读如何添加到导航堆栈。 [self.navigationController setNavigationBarHidden:YES animated:NO]; –

+0

没问题。建议阅读Apple文档的“概述”和“任务”部分:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html –

+0

欢呼声,将立即检查。 。这是我第一次开始在ios开发中的时候,我读了一大堆苹果文档的东西,但当时并没有理解它的大部分内容,所以也许再也不用回头刷新了。 –

8

有几件事情错在这里。

  1. 您应该访问使用self.navigationController来呈现视图控制器的导航控制器。你的代码片段正在创建一个新的UINavigationController;隐藏该栏不会给你任何东西。
  2. 您应该将其隐藏在viewWillAppear:中,而不是隐藏viewDidLoad中的导航栏。您可以隐藏导航栏viewDidLoad,导航栏在视图最初呈现时将隐藏,但如果您要推送另一个呈现导航栏并点击后退按钮的视图,导航栏将保持可见状态。

viewWillAppear:应该是这个样子:

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

而且viewWillAppear:方法,你把这个导航控制器上应显示或隐藏相应的导航栏的其他视图控制器。

+0

这不起作用。在调用super的'viewWillAppear'方法之前,您需要交换线条并设置导航栏隐藏。 –

+0

我不知道该告诉你什么。这是我在我的应用程序中的方式,它工作正常。 –

+0

@JoseIbanez这对我有用 – Loozie

-1

iPhone hide Navigation Bar only on first page

试试这个答案。它解决了我的问题。

我遇到了导航栏的问题。我可以让它消失,但当它需要的时候我不能让它重新出现。这个链接解释了如何解决这个问题,只需在viewWillAppear中打开它,然后在viewWillDisappear中关闭。

+0

你好,欢迎来到Stackoverflow。请阅读指导好的答案:http://stackoverflow.com/questions/how-to-answer。其中一条规则是向链接添加上下文,而不是仅粘贴链接。你应该提供一个有效的答案,而不需要用户导航到另一方,但可能希望这样做以获得答案的更多细节。当由于某种原因链接失效时,这会变成更大的问题。 – bitoiu

相关问题