2

Navigation Controller私は私のために使用しています、私はこのようなものとしてViewControllers私を設定しました:importantViewControllerRootView

UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentModalViewController: navControl animated: YES];

FrontViewController次に、次のように、anotherViewをpushViewします。

    [self.navigationController pushViewController:vc animated:YES];

ボタンが押された後、FrontViewController別のビューが押されますが、これと同じ方法ViewAで別のViewControllerに接続されます。ViewB

    [self.navigationController pushViewController:vc animated:YES];

(私はそれらのいずれかをで却下するときに私が間違っていると思います[self.navigationController popViewControllerAnimated:YES];

これはイラストです:

ここに画像の説明を入力してください

私の問題は、ビューAとビューBの間を移動する必要があることです。どちらかを閉じると、に戻りFrontViewControllerます。子ビューの子のように。ありがとう。

4

4 に答える 4

2

これはdismissModalViewController用だと思いますが、これを試してみてください。

ビューBから次のようなコードを記述します

[[self parentViewController].navigationController popViewControllerAnimated:YES];

ビューAから、次のように書くことができます。

[self.navigationController popViewControllerAnimated:YES];

または、これを使用することもできます。

[self.navigationController popToViewController:frontViewController animated:YES];

アップデート

for (UIViewController *tmpController  in [self.navigationController viewControllers]) 
{
    if ([tmpController isKindOfClass:[FrontViewController class]])
    {
        [self.navigationController popToViewController:tmpController animated:YES];
        break;
    }
}

これは、これを実現するための最良のソリューションです。

ビューAまたはビューBの両方にこのコードを記述します。

それが今うまくいくことを願っています:-)

于 2012-07-02T08:53:01.633 に答える
2

@PrasadGが示す1つの方法があります。しかし、このソリューションの問題は、の同じオブジェクトが必要なことですfrontViewController。新しいオブジェクトを作成してこれを行うことはできません。この方法frontViewControllerでappdelgateでオブジェクトを宣言し、importantVCの使用からオブジェクトをプッシュします。

appdelgate.frontViewController = // initialize
// Push it

ビューBから戻りながら

[self.navigationController popToViewController:appdelegate.frontViewController animated:YES];

別の解決策は

for (UIViewController *vc  in [self.navigationController viewControllers]) {
    if ([vc isKindOfClass:[FrontViewController class]]) {
        [self.navigationController popToViewController:vc animated:YES];
        break;
    }
}

この方法を使用すると、任意のレベルのナビゲーションスタックから任意のViewControllerに移動できます。

10個のViewControllerがあり、いずれか1つを使用する場合は、最初のソリューションを使用して、最初にappdelegateで10個すべてのViewControllerのオブジェクトを作成する必要があります。

ここに入力したばかりなので、このコードにはスペルの問題がある可能性があります

お役に立てれば :)

アップデート

->ルートビューとしてimpVCがあります->frontVCをプッシュしました->そこからVC_Aをプッシュしました->そこからVC_Bをプッシュします

プッシュが完了し、VC_Aに戻るために使用できます

[self.navigationController popViewControllerAnimated];

これで、VC_Bに再度アクセスして、ポップすることができます。VC_AからfrontVCに移動する場合は使用できpopViewControllerAnimated、VC_BからfrontVCに移動する場合は、前述のforループを使用できます。

他に何か探している場合は説明してください。それでも問題が発生する場合は、説明してください。

于 2012-07-02T08:57:21.410 に答える
0
[self.navigationController popToViewController:frontViewController animated:YES];

このようにしてみてください。あなたに役立つと思います。

于 2012-07-02T08:51:54.247 に答える
0

FrontViewControllerの場合ボタンが押された後:

  ViewA instance
  [self.navigationController pushViewController:ViewA animated:YES]

ViewAが解散したとき

  [self.navigationController popViewControllerAnimated:YES];

ViewAにViewBをロードします

  ViewB instance
  [self.navigationController pushViewController:ViewB animated:YES]

バックviewBからFrontViewControllerへ

 FrontViewController instance
[self.navigationController popToViewController:FrontViewController animated:YES];

背面viewBからviewA

[self.navigationController popViewControllerAnimated:YES];
于 2012-07-02T08:56:04.640 に答える