2011-07-19 19 views
10

是的,我知道這裏有完全相同的問題,但我想用雙重解僱動畫做到這一點。 How to Dismiss 2 Modal View Controllers in Succession?如何用動畫*連續解除兩個模態視圖控制器?

我的代碼是與上述相同的問題,

視圖控制器A(在導航控制器) - 模態視圖控制器B - 模態視圖控制器C

這裏的僞代碼

notification to B (as delegate)  // I changed order of this two lines, 
dismiss C *without* animation // but it was same. 

(notification from C, in B) 
dismiss B *with* animation 

如果我在解散C時使用動畫,它不起作用,B不會被解僱,因爲C的解散動畫正在播放。

問題是:如果有動畫播放,我不能開始另一個關閉動畫。

我可以連續播放解散動畫嗎?

這不僅是解散動畫的問題,它也可以應用於其他iOS動畫。

P.S:我想我可以使用計時器等到第一次動畫結束,但它很髒並且不穩定,不是嗎?

閒聊:在我的程序,

  • 答:文章列表視圖
  • B:寫文章觀點
  • C:登錄視圖(如果用戶沒有登錄)

今天,我必須添加連接視圖,我必須及時關閉3個視圖lol我該如何幫助?

+0

更多通用的方式來駁斥更多的一個模態視圖控制器[這裏](https://stackoverflow.com/a/44583711/1151916) – Ramis

回答

6

您可以生成一個NSNotification,然後從第一個模態出現的根開始解除第一個模態視圖控制器,所有其他模式將自動消失。我在我的一個應用程序中完成了這項工作。

+0

如何獲得我的根控制器中的第一個模態視圖控制器?考慮到它可能是許多不同類別之一 –

+0

你絕對不應該使用NSNotification進行這種通訊!但否則......這個答案是5歲,也許在2011年是不同的。 @Zil:你可以通過控制器的presentingViewController屬性循環來獲取根控制器。 – Ben

+0

我最終總是在模態導航控制器上堆疊模態,並逐個取消導航控制器而不是模態 –

0

當您希望視圖關閉模態視圖時,您可以使用[self dismissModalViewControllerAnimated:(BOOL)]。如果你在兩個控制器中調用它,它應該工作。我沒有嘗試過,但似乎是合乎邏輯的。

我必須補充說,如果你需要在一行中呈現多個模態視圖,你可能應該考慮對其中的一些使用不同的模式。例如,登錄視圖可以是一個alertview而不是一個模態視圖控制器。

0

我遇到了類似類型的問題,試圖讓動畫繼續工作。我一直在嘗試以下操作:

如果在調用performSelectorOnMainThread的內部調用第二個動畫(即dimiss B),該怎麼辦?這會讓我覺得第二個動畫將被迫等待第一個完成。

雖然我還沒有測試過。祝你好運 - 我對你提出的解決方案非常好奇。

0

您可以通過使用

[AviewController dismissModalViewControllerAnimated:YES]; 

這裏AviewController是A. 希望這將幫助你的對象中刪除2視圖。

0

[self dismissModalViewControllerAnimated:(BOOL)]不起作用。第二個動畫不會觸發。在iOS 5中,您可以使用[self dismissViewControllerAnimated:YES completion:^{}];,但這不會向後兼容4.0。我只有成功地調用了一個委託方法,在呈現新模型之前關閉了模態視圖控制器。

21

的iOS 5.0及更高版本:

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

這工作如果您有:

A - starting view controller 
M1 - modally presented by A 
M2 - modally presented by M1 

放入M2的視圖控制器類的代碼行(和一個按鈕或什麼來激活它),它會通過層次結構「伸手」,並告訴A dismissViewControllerAnimated:...

但是,Rahul Vayas的回答可能是對於在「A」和最後一個模態視圖之間延伸的模態視圖控制器數量未知的情況,更好的方法。

+1

請注意,這不會因兩個動畫而消失。只有一個動畫。仔細閱讀後,我看到OP特意要求兩個動畫。我的錯。 –

+0

這裏是iOS的8.4反覆出現的問題http://stackoverflow.com/questions/31396193/impossible-animation-with-dismissviewcontrolleranimated-ios8-4 – Chisx

+0

正是我想要的,謝謝:)似乎在iOS10工作 –

相關問題