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

さて、インデックス ページ ビュー コントローラーのナビゲーション コントローラー コンテナーを削除することで、これを修正しました。これはばかげた質問かもしれません。なぜなら、Apple は開発者向けドキュメントで、ナビゲーション ビュー コントローラーをビュー スタックの可能な限りルートとして配置する必要があると正式に述べているからです。IOS はクローズド システムであるため、WTH が Apple を除いてその下で進行していることを誰が知っていますか。

于 2012-06-26T02:07:26.253 に答える