2012-03-07 45 views
9

,我想提出ontop的所述第一的第二視圖,然後關閉該第一:如何呈現第二的ViewController&在父的ViewController使用以下代碼駁回第一

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

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

運行時,提出第二種觀點,但第一種觀點不會消失。

+0

答案previousView是一個導航控制器堆棧上的viewController或有人模態顯示? – 2012-03-07 13:25:33

+0

是的,它以模態顯示。我不明白爲什麼它不會解僱。 – 2012-03-19 13:42:46

+0

從你的代碼,它只說presentViewController:動畫,不presentModalViewController:動畫 – 2012-03-19 13:58:17

回答

12

您需要先關閉該 「previousView」 &則呈現 「nextQuestionViewController」:

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

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

下面的答案導致以下異常:'由於未捕獲的異常'NSInvalidArgumentException'終止應用程序,原因:'應用程序試圖以模態方式呈現活動控制器'' – Benjamin 2012-11-21 05:19:42

+0

你不覺得它會出錯容易使用視圖控制器來呈現另一個知道它自己將在某個時間點被釋放的視圖控制器。正如@Mozilla所建議的那樣,我寧願使用'[[UIApplication sharedApplication] .keyWindow.rootViewController''或類似的形式來呈現'nextQuestionViewController'。 – atulkhatri 2016-03-21 09:53:50

4

嘗試

[self dismissViewControllerAnimated:NO completion:nil]; 

做不到這一點:

[self.navigationController popViewControllerAnimated:YES]; 
+0

我試圖再次解決這個問題 - 使用這兩種方法都無法解除第二個viewController,提出第一個後 - 我錯過了別的東西? – 2012-08-20 16:16:35

+0

正如Raphael所說,你應該如下展示第二個viewController:[previousView presentModalViewController:nextQuestionViewController animated:YES]; – ader 2012-08-28 08:53:50

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]; 
    }]; 
相關問題