4

在我的應用程序我具有下列構型打開我的視圖控制器:IOS:打開和關閉一些視圖控制器

當我寫「pushViewController」我使用導航控制器,當我寫「本「我使用presentModalViewController

firtsView -> (pushviewcontroller) -> secondOneView -> (present) -> thirdOneView -> (present) -> fourthView 

firstView -> (pushviewcontroller) -> secondTwoView -> (present) -> thirdTwoView 

這是我的應用程序來組織我的視圖控制器的方案。然後我的問題是:

什麼是從「fourthView」(也就是當我去從「fourthView」回)「secondTwoView」返回的方式嗎?

有沒有辦法做到這一點?

回答

5

是的。

UIViewController提供了不同的方法來取消視圖控制器,具體取決於您是否以模態方式呈現它。它們是:

-(void)dismissModalViewControllerAnimated:(BOOL)animated; // modal 
-(void)dismissViewControllerAnimated:(BOOL)flag 
          completion:(void (^)(void))completion; 

您需要一一解僱他們。 此外,請花時間閱讀Apple的View Programming Guide

使用UINavigationController您可以使用彈出任何視圖控制器:

-(NSArray *)popToViewController:(UIViewController *)viewController 
         animated:(BOOL)animated; 

另外,另一種方法讓你的流行只是一個:

-(UIViewController *)popViewControllerAnimated:(BOOL)animated; 
0

如果使用presentViewController

我認爲你必須一個一個關閉viewController

但如果你只navigationcontroller,那麼你就可以彈出來的viewController你想

0
    在thirdOneView的視圖 - 控制
  1. ,做dismissModalViewControllerAnimated:NO
  2. 在secondOneView的視圖 - 控制做dismissModalViewControllerAnimated:NO一次。
  3. 在secondOneView的視圖 - 控制做popViewControllerAnimated:NO
  4. 中的firstView的視圖控制器做pushViewController到secondTwoView

如果你想一些動畫。我建議通過使用CoreAnimation手動執行此操作。由於

-(void)dismissViewControllerAnimated:(BOOL)flag 
         completion:(void (^)(void))completion; 

僅在iOS5之後可用。

相關問題