IOS:打开和关闭一些视图控制器

时间:2012-01-27 09:52:15

标签: ios xcode uiviewcontroller uinavigationcontroller presentmodalviewcontroller

在我的应用程序中,我有以下配置来打开我的视图控制器:

当我写“pushViewController”时,我使用导航控制器,当我写“present”时,我使用presentModalViewController

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

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

这是我的应用程序组织我的视图控制器的方案。然后我的问题是:

“fourthView”(即从“fourthView”返回)到“secondTwoView”的方式是什么?

有办法吗?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

如果你使用presentViewController

我认为你必须逐一解除viewController

但是如果你只是导航控制器,那么你可以弹出到你想要的viewController

答案 2 :(得分:0)

  1. 在thirdOneView的viewcontroller中,执行dismissModalViewControllerAnimated:NO
  2. 在secondOneView的viewcontroller中执行dismissModalViewControllerAnimated:NO。再次。
  3. 在secondOneView的viewcontroller中执行popViewControllerAnimated:NO
  4. 在firstView的Viewcontroller中执行pushViewController到secondTwoView
  5. 如果你想要一些动画。我建议使用CoreAnimation手动完成。由于

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

    仅在iOS5之后可用。