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之后可用。

相关问题