2012-09-05 33 views
0

我對iOS開發相對較新,並且遇到彈出視圖控制器的問題。當按下後退按鈕時,我需要從導航堆棧彈出兩個(或更多)UIViewControllers。由於我不希望它們全都是動畫,所以我首先彈出所有的動畫,但最後一個沒有動畫,然後最後一個動畫,但是-viewWillDisappear沒有被調用,只有最後一個。這裏是我的代碼(這些都可以從超級UIViewController叫所有的人都從擴展):iOS:viewWillDisappear沒有從另一個視圖控制器調用popViewControllerAnimated

//popping all but last one - viewWillDisappear getting called for these 
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:j] animated:NO]; 
//popping last one - viewWillDisappear not getting called for this one 
[self.navigationController popViewControllerAnimated:YES]; 
//also tried this but with same result: 
//[((UIViewController*)[self.navigationController.viewControllers objectAtIndex:j]).navigationController popViewControllerAnimated:YES]; 

是否有人知道我在做什麼錯在這裏或者你可以教我如何正確地實現我需要什麼?

回答

1

viewWillDisappear在加載新控制器時已被調用。 Offhand我會想象只有頂級控制器viewWillDissappear在做這樣的事情時會被調用。

此外,爲什麼不只是彈出到所需的視圖動畫?

如果你把nslog放在視圖中會出現,你可能會發現等於被調用的視圖會消失。

讓我知道你在找什麼。希望有所幫助。

+0

感謝您的輸入@Hackmodford。不知道爲什麼我沒有彈出一個我想要馬上動畫的人。現在我嘗試了它,但結果相同。當我彈出時,無論堆棧中有多少UIViewController(比如說3),它總是會調用viewWillDisappear來顯示所顯示的那個(3rd),但是它會調用viewWillAppear來獲取它彈出的最後一個(第一個),將不會爲它調用viewWillDisappear,並且會調用viewWillAppear來顯示即將顯示的數字(數字0)。也許更好的問題是,爲什麼如果它沒有顯示它,它將爲viewWillAppear調用#1。希望這可以幫助。 – mdmilic

+0

也可能是我應該提到的是,我使用[這篇SO文章]的解決方案(http://stackoverflow.com/questions/1214965/setting-action-for-back-button-in-navigation-controller/3445994#3445994 ),以檢測何時按下後退按鈕,以便我可以覆蓋它。這意味着,當VC顯示在其viewWillDisappear中調用'[supper viewWillDisappear]'時,所有彈出操作都會在超級VC的viewWillDisappear中完成。 – mdmilic

+0

是的我在代碼中也使用了這個例子。我不知道爲什麼觀點#1得到viewWillAppear ...也許這是它的動畫方式?在任何情況下,你是否找到了解決你需要的解決方案? – Hackmodford

相關問題