2012-06-18 64 views
28

我想知道他們有什麼不同。 當我可以調用dismissViewControllerAnimated VS popViewControllerAnimated

[self dismissViewControllerAnimated:YES completion:nil]; 

,當我應該調用

[self.navigationController popViewControllerAnimated:YES]; 

根據蘋果的文件: dismissViewControllerAnimated裝置 「駁回這是由接收器呈現的視圖控制器」。 但我總是無法通過這種方法解僱視圖控制器。

+0

至於解僱請參閱斯坦福的[this](https://youtu.be/oTsg-uJfxD4?t=556)視頻。應始終將dismissViewController發送到* present * viewController。如果你發送給它的*呈現* viewController和presentViewcontroller沒有提出**一個** nother viewController *然後*它會解僱它適當,否則它不會這樣做的權利 – Honey

回答

38

你選擇的應用程序是基於導航應用意味着

[self.navigationController popViewControllerAnimated:YES]; 

您選擇的應用程序以外的其他導航應用基礎手段

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

所以這意味着:我不應該使用dismissViewControllerAnimated在基於導航的應用?我認爲這是爲什麼我總是無法解僱ViewControllerAnimated的原因,謝謝! –

36

-dismissViewControllerAnimated:完成:

用於解僱了由該方法呈現的UIViewController

-presentViewController:animated:completion:

-popViewControllerAnimated:UINavigationController

用於彈出通過UINavigationController

-pushViewController:animated方法示出的控制器。

在第一種情況下,視圖控制器的視圖顯示爲模式控制器(通常從下到上),第二種情況是您在UINavigationController的導航堆棧中推視圖控制器。

相關問題