ここに私の問題があります。 私はビューベースのアプリケーションを持っています。 AppDelegate
に次のようにNavigationController
を追加しました。IOS。ナビゲーションコントローラ。再利用ViewController
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:_viewController];
navigationController = [nvc retain];
[nvc retain];
[self.window addSubview:navigationController.view];
このコードはインターネットから入手しました。それが正しいかどうかわかりません。
すべてのviewControllerでは、私は新しいビューをプッシュするために次のようにしています。
UIViewController *newViewController = [[NewViewController alloc] init];
[self.navigationController pushViewController:newViewController animated:TRUE];
self.navigationController
を押すビューでnilを返さない理由を私は知りません。それは何とかAppDelegateナビゲーションコントローラを使用していますか?いくつかのView Controllerを再利用したいのですが。私はビューコントローラを呼び出すたびにinitを割り当てるわけではありません。どうやってやるの?
AppDelegate
に参照を保存しますか?他の解決策?私は複雑なナビゲーションを持っています。すなわち、A、B、Cはビューコントローラである。 AコールB. BコールC.コールA.電話を続けている場合は、毎回新しいView Controllerを作成しています。これらのビューコントローラを再利用するには(または、新しいビューを呼び出すときにポップしてビューをスタックから解放する)ことができますか?
ありがとう。
答えがNavigationControllerを使用していない可能性があります。それを使用せずに新しいView Controllerをプッシュする方法はありますか? 新しいビューコントローラをスタックに追加せずにプッシュするだけで、私の問題を解決できます。どう思いますか? – Tony
これは、ユーザーがあなたのアプリとどのようにやりとりしたいかによってまったく異なります。 'presentModalViewController:animated:'を使って新しいView Controllerを表示することもできます。これにより、現在のUIの上に新しいView Controllerをモーダルにすることができます。 – mattjgalloway
Matt、 ビューコントローラA、B、Cがあるとします。 Aが基本です。 AはBに行くことができます。BはCに行くことができ、CはBに行くことができます。BまたはCはAに戻ることができます:A-> B、B <-> C、C-> A、B-> A。 ナビゲーションコントローラをA、プッシュB、BがCを押してCを押しながら同時にAのナビゲーションコントローラのBをポップすることはできますか? 私は以下を持っています: - AはBを呼び出します。ナビゲーションコントローラスタック:A、B - BがCを呼び出します。ナビゲーションコントローラスタック:A、C - CがBを呼び出します。ナビゲーションコントローラスタック:A、B - BがAに戻ります。ナビゲーションコントローラスタック:A これは間違いありませんか?別のビューを呼び出した後、ビューをポップするにはどうしたらいいですか? – Tony