2012-02-14 10 views
1

私は、TabBarControllerとNavigation Controllerの両方で構成されるアプリケーションを持っています。私はtabAとtabBの2つのタブを持っています。 デフォルトのselecetdタブは、View Controller L(アプリケーションの起動が完了したとき)で1(tabB)です。ここでは、L => M => N => Oのようにナビゲートできます。 tabAのView Controllerはx.userです。x => y => zとナビゲートできます。 これはしてはならない移動しなければならない/プッシュ/ポップビューコントローラL.他のタブのビューコントローラから2番目のタブのルートビュー(デフォルト)をポップ

とTABBのルート・ビュー・コントローラへの消費者の任意sugestions、おかげ

答えて

7

Zビューコントローラの上部のボタンがあります私はあなたの質問を正しく理解している場合は、ハードです。

方法は次のようになります。

- (void) pop 
{ 
    UIViewController * target = [[self.tabBarController viewControllers] objectAtIndex:1]; 

    [target.navigationController popToRootViewControllerAnimated: NO]; 

    [self.tabBarController setSelectedIndex:1]; 
} 
+0

+1:この答えを使用してください...あなたはほんの数秒早く私になりました:) – Jhaliya

+0

Uuuhh私はそれが起こると嫌いです。申し訳ありません:) –

+0

ありがとう、私は、ルートビューのコントローラにポップすることができましたが、消費者がナビゲートする場合は、tabB.Meansのビューコントローラの最後のナビゲーション項目に常にポップします:L => M => N => O私はTabBのルートビューコントローラをPOPINGしようとすると、tabB(L/M/N/oのいずれか)のナビゲーションを離れた場所にポップします。/O).i選択したタブ1(選択されたタブは正常に動作しています)でのみ、Lに移動します。 – Alok

1

あなたはsetSelectedIndex方法を使用してタブバーのボタンを選択するために、タブバーコントローラメソッドを使用し、その後、現在のタブバーのルートにポップする必要があります。..

+0

私は正しい方向に向いてくれてありがとう – Alok

1

私も同様の問題がありましたが、私はそれに対処するもっと簡単な方法を見つけたと思います。ユーザーが(最初の質問ではOまたはZ)に終わるかもしれないビューコントローラでは、私はそれらのVCのviewWillDisappearで

[self.navigationController popToRootViewControllerAnimated:NO]; 

を置きます。まっすぐで簡単です。なぜ私はこれをやりたくないのですか?元の質問者と同じように、私はいつも、ユーザーが最後にそのタブにいたときに中断した場所に関係なく、自分のタブのルートVCから開始したいと考えています。

クイックアップデート:自分のバージョンの分割ビューコントローラを作成し、上記の行をviewWillDisappearに追加すると、iPad上で望ましくないことがいくつか起きたため、デバイスタイプを確認する条件を追加する必要がありました両方のビューコントローラが私が作成したsplitVCの一部であったために、タブバーの問題が発生しましたが)そうでなければ、私がしたいことをするようです。

関連する問題