IOS:打开和关闭一些视图控制器
问题描述:
在我的应用程序我具有下列构型打开我的视图控制器:IOS:打开和关闭一些视图控制器
当我写“pushViewController”我使用导航控制器,当我写“本“我使用presentModalViewController
。
firtsView -> (pushviewcontroller) -> secondOneView -> (present) -> thirdOneView -> (present) -> fourthView
firstView -> (pushviewcontroller) -> secondTwoView -> (present) -> thirdTwoView
这是我的应用程序来组织我的视图控制器的方案。然后我的问题是:
什么是从“fourthView”(也就是当我去从“fourthView”回)“secondTwoView”返回的方式吗?
有没有办法做到这一点?
答
是的。
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;
答
如果使用presentViewController
我认为你必须一个一个关闭viewController
但如果你只navigationcontroller,那么你就可以弹出来的viewController你想
答
-
在thirdOneView的视图 - 控制
- ,做dismissModalViewControllerAnimated:NO
- 在secondOneView的视图 - 控制做dismissModalViewControllerAnimated:NO一次。
- 在secondOneView的视图 - 控制做popViewControllerAnimated:NO
- 中的firstView的视图控制器做pushViewController到secondTwoView
如果你想一些动画。我建议通过使用CoreAnimation手动执行此操作。由于
-(void)dismissViewControllerAnimated:(BOOL)flag
completion:(void (^)(void))completion;
仅在iOS5之后可用。