2012-03-07 14 views
9

を却下する方法を、私は最初の岩下2番目のビューを提示したい、その後、最初のを却下:第二のViewControllerを提示&親のViewControllerに次のコードを使用して第1

// Animates the next questionViewController using the first questionViewController 
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil]; 

// Dismiss the first questionViewController 
[previousView dismissViewControllerAnimated:NO completion:nil]; 

実行すると、第2のビューが提示されるが、第1のビューは却下されない。あなたが最初に "nextQuestionViewControllerを" 提示 "previousView" &を却下する必要があるだろう

[self.navigationController popViewControllerAnimated:YES]; 
+0

previousViewで私の答えを見ることができるナビゲーションコントローラのスタック上のViewControllerであるか、それがモーダル表示されていましたか? –

+0

はい、モーダルで表示されます。なぜそれが却下されないのか分かりません。 –

+0

あなたのコードから、それはpresentViewController:animated、presentModalViewController:animatedではないと言います –

答えて

12

+1

次の例外があります: 'キャッチされていない例外によるアプリケーションの終了' NSInvalidArgumentException '、理由:'アプリケーションがアクティブなコントローラをモーダルで表示しようとしました。 '' – Benjamin

+0

エラーとは思わないかビューコントローラを使用して、ある時点でそれ自体が解放されることを知っている別のものを提示する傾向があります。 @Mozillaで提案されているように、 '' [UIApplication sharedApplication] .keyWindow.rootViewController'またはそれに類似した 'nextQuestionViewController'を使用したいと思います。 – atulkhatri

4

はという失敗

[self dismissViewControllerAnimated:NO completion:nil]; 

を試してみてください

// Dismiss the first questionViewController 
[previousView dismissViewControllerAnimated:NO completion:nil]; 

// Animates the next questionViewController using the first questionViewController 
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil]; 
+0

私はこの問題をもう一度解決しようとしています - 両方のメソッドを使用すると、最初のプレゼンテーションの後に2番目のviewControllerを終了できません。 –

+0

Raphaelによると、次のように2番目のviewControllerを表示する必要があります:[previousView presentModalViewController:nextQuestionViewController animated:YES]; – ader

2

私は次のでした(自己はあなたの古いコントローラです):

UIStoryboard *storyboard = self.storyboard; 

[self dismissViewControllerAnimated:YES 
         completion:^{ 
     UIViewController *newController = [storyboard instantiateViewControllerWithIdentifier:@"newControllerStoryboardId"]; 
     newController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

     [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:newController animated:YES completion:nil]; 
    }]; 
-1

簡単にAを表示せずにBからCに行くことはできないようですが、これはプロフェッショナルではありません。しかし、あなたはコードではC.

にアニメ化するまで、Aの上に黒のサブビューを入れhttps://stackoverflow.com/a/45579371/218226

関連する問題