2

Aに基づいてモーダルビューBを提示し、Bに基づいてモーダルビューCを提示すると仮定します。

B と C の両方を却下して、直接 A に戻る方法はありますか?

4

4 に答える 4

5

XCode4.5 でストーリーボードを使用すると仮定すると、新しいアンワインド セグエを使用できます。埋め込む

 -(IBAction)back:(UIStoryboardSegue*)segue

(関数定義を空のままにしておくことができます。) 次に、C のコントローラーで、新しい終了アイコンを右クリックし、巻き戻しを開始するコントロールに新しいエントリを接続します。

于 2012-10-11T22:54:27.343 に答える
5

はい、解決策があります。おそらく少し汚れていますが、回避できます

UIViewController* vc = self;

while (vc) {
    UIViewController* temp = vc.presentingViewController;
    if (!temp.presentedViewController) {
        [vc dismissViewControllerAnimated:YES completion:^{}];
        break;
    }
    vc =  temp;
}

スタック内のモデル コントローラーのいずれかからこれを呼び出すことができます。それらはすべて破棄されます。2番目のものを探して、それを却下します。

于 2012-10-11T23:16:04.560 に答える
2

はい、[B disconnectModalViewControllerAnimated:YES] を呼び出すことができます。

もちろん、C が B から提示された場合、それも却下されます。

そして、ここに相対的な質問があり、完全な回答が含まれています。 iPhone - 複数の ViewController を閉じる

于 2012-10-11T22:45:58.540 に答える