UINavigationController导航栏可见性集不起作用

时间:2012-06-25 03:40:37

标签: iphone user-interface

我正在尝试在我的应用中添加一些导航控制器,它似乎是:

在我的索引页面视图控制器中,我尝试像这样初始化导航控制器:

-(void)viewDidLoad{
    ...
    //allocate a navigation controller.
    myNavigationController = [[UINavigationController alloc]init];
    myNavigationController.delegate = self;
    myNavigationController.navigationBar.hidden = YES;
    [self.view addSubview:myNavigationController.view];

    [myNavigationController pushViewController:tabViewController animated:YES];
    [self presentModalViewController:myNavigationController animated:YES];
}

这里,索引页面视图控制器是我的应用程序的根视图控制器,它只是一个常见的UIViewController。

[myNavigationController pushViewController:tabViewController animated:YES];

这里我推入导航控制器的tabViewController是一个自定义的tabview控制器,它使用容器视图来保持标签按钮,还有一个导航控制器,用于切换标签。

这里的问题是:

myNavigationController.navigationBar.hidden = YES;

因为我使导航栏不可见,所以当我的自定义视图控制器显示时它没有显示,但是当我想用导航控制器切换到其他视图控制器时我也希望导航栏可见:

myNavigationController.navigationBar.hidden = NO;
MyViewController *toSwitchNC = [[MyViewController alloc]init];
[myNavigationController pushViewController:toSwitchNC animated:YES]; 

导航栏将永远不再显示。我也尝试过:

self.navigationController.navigationBar.hidden = NO

在MyViewController的viewDidLoad,ViewDidAppear中,甚至在导航控制器的委托方法中,它也没有显示导航栏。

那有什么问题呢?为什么我首先将导航栏初始化为不可见,即使我将隐藏标志设置为假,它也永远不会再显示?

1 个答案:

答案 0 :(得分:0)

好的,我通过删除索引页面视图控制器中的导航控制器容器来解决此问题。这可能是一个愚蠢的问题,因为Apple在开发人员文档中正式声明导航视图控制器应该尽可能在视图堆栈中放置。由于IOS是一个封闭的系统,谁知道除了Apple之外,WTH正处于下方。