5

これが問題です。で次のコードを使用してUINavigationControllerrootViewController. 多数の異なる画面間でを交換しrootViewController、ユーザーが各画面からドリルダウンできるようにする必要があります (これが、Nav コントローラーが必要な理由です)。

SomeViewController *tmp = [[SomeViewController alloc] initWithNibName:@"SomeViewController" bundle:nil];
NSArray * viewControllers = [self viewControllers];
NSArray * newViewControllers = [NSArray arrayWithObjects:tmp, nil];
[self setViewControllers:newViewControllers];

のクラス リファレンスを読んでUINavigationControllerみると、「viewControllers」プロパティについて、「ルート ビュー コントローラーは配列のインデックス 0 にあり、バック ビュー コントローラーはインデックス n-2 にあり、トップ コントローラーはインデックス n-1 で、n は配列内のアイテムの数です。」

そこに viewControllers 配列のカウントを出力すると、現在の rootViewController である 1 が得られます。トップコントローラー(ナビゲーションバーだと思います)用に何かあるべきではありませんか?

新しいビューで使用するとすぐsetViewControllersに、ナビゲーション バーのすべてが消えます。左ボタンと右ボタン、およびカスタム タイトル ボタンがあり、これらはすべて初期化され、init メソッドでナビゲーション バーに追加され、消えるまで正常に動作していたことを追加します。

どんな助けでも大歓迎です。

4

1 に答える 1

9

UINavigationControllerはビューコントローラーのスタック(配列)を管理するため、スタックを提供すると、割り当てが解除され、古いスタックが削除されます。複数のビューコントローラを追加する必要がある場合は-pushViewController:animated:completion:、最後のビューコントローラを除くすべてのビューコントローラをアニメーション化してNOに設定して使用できます。

与えたスタックにはビューコントローラーが1つしか含まれていないため、-count1が出力され、実際にはトップビューコントローラーになります。

于 2012-11-13T14:10:09.887 に答える