質問

2つのモーダルビューコントローラーを却下する必要があります。2つ以上のビューコントローラーをポップする方法を知っています

        UINavigationController* navController = self.navigationController;
    NSArray *array=[navController viewControllers];
    UIViewController* controller = [navController.viewControllers objectAtIndex:0];
    [navController popToViiewController:controller animated:YES];

これは私が最初のビューに戻る方法ですが、モーダルビューを2つ以上却下する場合、どのようにバックバックすることができますか

マダン・モハン、ありがとう、私を助けてください

役に立ちましたか?

解決 4

UINavigationController* navController = self.navigationController;
NSArray *viewControllers=[navController viewControllers];
UIViewController* controller = [viewControllers objectAtIndex:0];
[navController popToViewController:controller animated:YES];

上記のコードでインデックス0にオブジェクトを設定すると、プッシュビューコントローラーである最初のビューに移動します。

1)rootView ---> moodalview1 ---> moodalview2 ---> moodalview3上記のコードを使用する場合、ルートビューになります。

2)rootView ---> pushView1 ----> moodalview1 ---> moodalview2 -----> moodalview3。上記のコードを使用すると、PushViewになります。

他のヒント

のドキュメントから -[UIViewController dismissModalViewController]:

いくつかのモーダルビューコントローラーを連続して提示し、モーダルビューコントローラーのスタックを構築する場合、スタックの低いビューコントローラーでこのメソッドを呼び出すと、その即時の子ビューコントローラーとスタック上の子供の上のすべてのビューコントローラーが却下されます。これが起こると、最上位のビューのみがアニメーション化された方法で却下されます。中間ビューコントローラーは、スタックから単純に削除されます。最上位ビューは、モーダルトランジションスタイルを使用して却下されます。これは、スタックの低い他のビューコントローラーが使用するスタイルとは異なる場合があります。

以下のコードを使用してください

[[[self presentingViewController] presentingViewController]  dismissModalViewControllerAnimated:YES];

次のユーティリティ静的方法を使用して、モーダルのスタックについてPopTorootViewControllerをシミュレートします。

// Util.m
+ (void)popModalsToRootFrom:(UIViewController*)aVc {
    if(aVc.parentViewController == nil) {
        return;
    }
    else {
        [Util popModalsToRootFrom:aVc.parentViewController];  // recursive call to this method
        [aVc.parentViewController dismissModalViewControllerAnimated:NO];
    }
}

あなたはそれをこのように使用します:

[Util popModalsToRootFrom:aViewController];

もっと高度なものが必要な場合は、これを行うことができます。

+ (void)popModalsFrom:(UIViewController*)aVc popCount:(int)count {
    if(aVc.parentViewController == nil || count == 0) {
        return;
    }
    else {
        [Util popModalsFrom:aVc.parentViewController popCount:count-1];  // recursive call to this method
        [aVc.parentViewController dismissModalViewControllerAnimated:NO];
    }
}

次に、モーダルの数を渡してポップするか、または-1だけでルートまでポップします。

にとって iOS 5, 、のサポート animation==YES (ビューは順番に隠されます)と completion ブロック:

+ (void)dismissAllVCsForVC:(UIViewController *)VC animated:(BOOL)animated completion:(BPSimpleBlock)completion {
    if (VC.presentedViewController == nil) {
        if (completion) {
            completion();
        }
    } else {
        [BaseViewController dismissAllVCsForVC:VC.presentedViewController
                                        animated:animated
                                      completion:
         ^{
             [VC dismissViewControllerAnimated:animated completion:completion];
         }];
     }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top