4

UINavigationControllerで を使用しているアプリケーションを開発していますAppDelegate。起動時に、.で初期化しますUIViewController

 self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController setNavigationBarHidden:YES];

[window addSubview:self.navigationController.view]; like this.

ただし、 other に other を追加したいUIViewControllersのですが、 other を使用するたびにUINavigatioNControllerを再初期化するのは良い習慣ではないことを知っています。これを行う通常の方法を教えてください。UINavigationControllerUIViewControllers

4

2 に答える 2

5

ビュー コントローラのスタックを正確に把握している場合は、それらを直接設定できます。

たとえば、ナビゲーション コントローラーのビューを OverView > TableView > NewItemView として開始したいとします。アプリを起動したらすぐに最初のエントリを作成してもらいたいです。私のナビゲーション コントローラーでは、次の手順を実行するだけで済み-application:didFinishLaunchingWithOptions:ます。

NSArray *stack = [NSArray arrayWithObjects:overViewController, tableViewController, newItemViewController, nil];
navController.viewControllers = stack;

これにより、古いスタックが完全に削除されることに注意してください。ナビゲーション ビュー コントローラー内のビュー コントローラーはすべて失われます。

于 2012-06-10T15:56:23.527 に答える
2

UINavigationController は、UIViewController を 1 つだけ受け取ります。

他の UIViewController を使用するには、メソッドによって rootViewController からプッシュする必要があります。

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

ドキュメント: http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

于 2012-06-10T15:04:50.447 に答える