回答

8

是的,你不能那樣做。我假設你所做的是這樣的:

[self dismissModalViewControllerAnimated:YES]; 
[self presentModalViewController:myNewController animated:YES]; 

這是行不通的。我不知道爲什麼,但它與我相信的動畫有關。你的選擇是關閉沒有動畫的第一個,或者等待在父視圖的viewDidAppear中顯示新的(或者可能是先前的模式視圖的viewDidDisappear,但不知道這是否可行)。

+3

這是行不通的原因是因爲當動畫完成時,視圖控制器會刪除它對模態vc的引用。因此它不認爲它有另一個視圖控制器來表示模態了。兩種建議的解決方案都可以使用。 – 2010-10-14 04:31:14

+2

這裏發佈的答案有關這兩種方法的更多細節。 http://stackoverflow.com/questions/3919845/presenting-a-modal-view-controller-immediately-after-dismissing-another/3919870#3919870 – 2010-10-14 04:34:58

0

你不能解僱之後另外兩個模式視圖控制器,除了其他的什麼海報建議,可以等待的時間少量駁回其他模式的看法,例如

[self performSelector:@selector(method) withObject:nil afterDelay:.5]; 

其中,該方法前所謂的只是解僱你的其他模態觀點。 代碼片段在.5秒後執行選擇器,並且可以在動畫計時問題(如所描述的動畫計時問題)時使用,以便分離通話時間以便正確執行通話時間。

+0

這是一個有點危險(不是很多),如果解僱動畫需要比你的延遲時間更長,你的模態vc仍然不會出現。 (時間可能會隨着操作系統更新而改變。)亞歷克斯的方法對這個問題是免疫的。 – 2010-10-14 04:33:01