2013-08-14 9 views
9

ビューコントローラでは、別のビューコントローラを表示するボタンがあります。 2番目のビューコントローラから、私は他のビューコントローラに行くことができますが、必ずしもここで私を得たコントローラに戻る必要はありません。この場合、元のView Controllerを削除するにはどうすればよいですか?iPhone - 表示されているビューコントローラを削除する

+0

は、あなたがこれまでにしようとしているものにように、コードを投稿することができます。また、View Controllerをロードするために使用しているものもあります。それはUINavigationControllerですか? View Controllerをポップしようとしましたか? –

+0

私のための愚かな質問のように見える...あなたが今まで試したことがあるいくつかのコードを貼り付けてください... –

+0

私はdismissViewControllerまたはpopViewControllerを使用する場合、これらのどちらも私を元のビューコントローラに連れて行きませんか?可能であれば、最初のView Controllerを終了する方法を探しています。 – Carmichael

答えて

25

あなたの説明はここで少し不明です。ここでは3種類のケースが考えられます:

  1. ちょうどナビゲーションコントローラのスタックに現在に別のビューコントローラを追加する別のビューコントローラ
  2. にナビゲーションコントローラ階層を抜け出しナビゲーションコントローラ階層
  3. を移動する

最初に、UINavigationControllerのメソッドを使用できます。

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

を使用し、viewControllersプロパティを使用してスタックをナビゲートします。

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil]; 
[[UIApplication sharedApplication] keyWindow].rootViewController = newController; 

またはより良い:あなたは1つの完全に別のビューコントローラに階層を抜け出すにしたい場合は

伊那秒1、、、単純でそれを行う最初の行の完了ブロックの2行目を追加します。

または第三のケースでは、あなたが唯一の例外を作りたい場合は、それ以外の方法を使用し、その後、ナビゲーションコントローラのスタックにとどまる:

- (void)addChildViewController:(UIViewController *)childController 
- (void)removeFromParentViewController 
17

現在の表示コントローラの表示方法によって異なります。 それはナビゲーションコントローラを使用して押された場合は、その後、

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

、モーダルだった場合:

[self.navigationController popViewControllerAnimated:YES]; 
関連する問題