ご挨拶!私は、いくつかのUINavigationControllerオブジェクトとビューを備えMainView.xib
た完全にストックされたUITabBarを使用する動作中の iPhone アプリ (ハザー!) を持っています。
このミックスに 1 回限りの登録ビューを追加するように依頼されました。このビューは、アプリの起動時にUITabBarの前に表示され、ユーザーから情報を取得し、サーバーに登録するか、既存の登録を確認してから、キーチェーン内のデータを削除します。(キーチェーンがすでに登録の証明を示している場合は、この特定のビューの表示をスキップします。)
登録とキーチェーンの部分は私が管理しています (後者については Erica Sadun に感謝します! )。
問題に近づきすぎて、何が問題なのかがわからないのではないかと思います。パイロットのエラーで、何も必要ないことを願っています。Rube Goldberg!
シナリオは次のとおりです。
アプリは、前述のUITabBarコントローラーなどがあるMainView.xibをロードすることから開始します。アル。議論のために、その登録ビューを表示する必要があるとしましょう。また、モーダルな外観にしたいので、下から上に飛んでいきます。次に、完了したら、それを閉じて、デリゲート (ほとんどの場合 App Delegate) を呼び出し、元のUITabBarを続行するように指示します。
// Normally, the Tab Bar Controller's view is added to the window ... still do this?
[window addSubview:tabBarController.view];
// We could now set up a VC like so. Mostly harmless. (I know, "mvc" is an unfortunate abbreviation in this case.)
RegistrationVC *mvc = [[RegistrationVC alloc] initWithNibName:@"RegistrationView" bundle:nil];
内部にUIViewがありますが、nav コントローラーがないことに注意しRegistrationView.xib
てください。たとえば、タブ バー アイテムのナビゲーション コントローラーの一部として (たとえば、登録情報を確認するために) 再利用できるように、分離したままにしておきたいと考えています。
先に進みます。物事をモーダルに提示する目的で nav コントローラーを作成します。
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:mvc];
次に、タブ バー コントローラーをベースとしてモーダル VC を提示し、割り当てられたビットを解放します。
[tabBarController presentModalViewController:nc animated:YES];
[nc release];
[mvc release];
最初の観察。これは単なるずさんなものだと何かが教えてくれます。最初のタブ バー アイテムのナビゲーション バーとビューが、モーダル ビューが急降下するのと同じように表示されることがわかります。さらに、選択した VC を事前に nil に設定しようとしても効果はありません。
tabBarController.selectedViewController = nil;
モーダルVCが完了するまで、タブバーを使用したくない/使用する必要はありません(そして、それがいつ起こるかを知らせるデリゲートがあります)。
なぜ私はタブバーに悩まされているのですか? うーん、そのモーダル VC の帽子をかぶる何かが必要なようですが、他に何を使うべきかわかりません。
これが唯一の方法ですか?登録 VC とタブ バーを不必要に繋いでいるように見えます。
手がかりは歓迎/感謝します!