0

我正在尝试在我的应用程序中添加一些导航控制器,它喜欢:

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

-(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 甚至导航控制器的委托方法中,它也没有显示导航栏。

那么它有什么问题呢?为什么我一开始将导航栏初始化为不可见,即使我将隐藏标志设置为false,它也不会再次显示?

4

1 回答 1

0

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

于 2012-06-26T02:07:26.253 回答