2016-06-23 8 views
1

私は、ユーザーがアプリで食べ物を買って自宅に届けられるようなアプリを開発しています。 ある時点で、ユーザーはカート内のいくつかの商品(タブビューコントローラーに表示されています)を取得し、住所と支払い方法を確認するために移動します(これらは2つの異なるプッシュビューコントローラーで行われます)。また、購入が完了すると、支払いが成功したかどうかを知らせるメッセージが表示されます(確認後、プッシュビューコントローラにも表示されます)。 ユーザーが購入を完了した後、購入プロセスからこれらのビューコントローラをすべて却下し、ボタンをタップしてタブビューコントローラに戻りたいと思います。複数のプッシュビューコントローラを閉じる

これらのプッシュされたView Controllerをすべて却下するにはどうすればよいですか?ここで

は、ストーリーボードの画像です:

enter image description here

答えて

7

あなたは、ルートビューコントローラに戻ってポップする機能が内蔵されたナビゲーションコントローラのを使用することができます。

self.navigationController?.popToRootViewControllerAnimated(true) 

これにより、ナビゲーションスタック上にあるすべてのプッシュビューコントローラが削除され、スタック上のベースコントローラに戻ります。この機能は、ボタンを押したときのアクションセレクタにアタッチできます。

0

はい、次のようにすることができます。 (ルート) - - > VCA - > VCB - > VCC -

ナビゲーションコントローラ---あなたは、このような構造を持っていると仮定今、あなたはVCDである> VCD

とVCaがNavigation Controllerのルートビューコントローラであるため、すべてのVCをポップまたはクローズしてVCaに戻るか、VCaに戻ることができます。

は今、あなたは、これはそれを行う必要があり、次の

for(UIViewController *vc in self.navigationController.viewControllers){ 
     if([vc isKindOfClass:[VCb class]]){ 
      // this means you have successfully picked VCb among all the vc 
      // inside of the viewControllers in the Navigation stack. 
      [self.navigationController popToViewController:vc animated:YES]; 
     } 
    } 

を行い、解任またはVCBにポップにしたい場合。お役に立てれば。

+0

あなたの回答は、ナビゲーション階層内の特定のビューコントローラを見つけ出し、他のすべてのビューコントローラをその特定のコントローラまで拒否するのに役立ちました。ありがとう –

関連する問題