Iphone 如何解除两个或多个dismissModalViewController?
我需要关闭两个模态视图控制器,我知道如何弹出两个或多个视图控制器Iphone 如何解除两个或多个dismissModalViewController?,iphone,objective-c,dismiss,Iphone,Objective C,Dismiss,我需要关闭两个模态视图控制器,我知道如何弹出两个或多个视图控制器 UINavigationController* navController = self.navigationController; NSArray *array=[navController viewControllers]; UIViewController* controller = [navController.viewControllers objectAtIndex:0]; [n
UINavigationController* navController = self.navigationController;
NSArray *array=[navController viewControllers];
UIViewController* controller = [navController.viewControllers objectAtIndex:0];
[navController popToViiewController:controller animated:YES];
这是我可以导航回我的第一个视图的方式,但是如果有两个或更多的视图,那么我如何导航回第一个视图呢
请帮帮我,
非常感谢。
Madan Mohan来自
-[UIViewController dismissModalViewController]
的文档:
如果您呈现多个模态视图
控制器相继出现,因此
构建一个模态视图堆栈
控制器上调用此方法
查看堆栈中较低的控制器
取消其直接子视图
控制器和所有视图控制器
在堆栈上的子对象上方。什么时候
这种情况发生时,只有最上面的视图
以一种生动的方式被抛弃;
任何中间视图控制器都是可用的
只是从堆栈中删除。这个
使用其
模态转换样式,可能
不同于其他人使用的样式
查看堆栈中较低的控制器
如果在上面的代码中将对象设置为索引0,它将带您进入第一个视图,这是一个推视图控制器
1) Rootview-->moodalview1-->moodalview2-->moodalview3如果您使用上述代码,那么您将处于root视图中
2) Rootview-->Pushview1-->moodalview1-->moodalview2-->moodalview3。如果您使用上述代码,您将处于PushView中。我使用以下实用程序静态方法模拟popToRootViewController以获得一组模态:
// Util.m
+ (void)popModalsToRootFrom:(UIViewController*)aVc {
if(aVc.parentViewController == nil) {
return;
}
else {
[Util popModalsToRootFrom:aVc.parentViewController]; // recursive call to this method
[aVc.parentViewController dismissModalViewControllerAnimated:NO];
}
}
您可以这样使用它:
[Util popModalsToRootFrom:aViewController];
如果您想要更高级的东西,可以这样做:
+ (void)popModalsFrom:(UIViewController*)aVc popCount:(int)count {
if(aVc.parentViewController == nil || count == 0) {
return;
}
else {
[Util popModalsFrom:aVc.parentViewController popCount:count-1]; // recursive call to this method
[aVc.parentViewController dismissModalViewControllerAnimated:NO];
}
}
然后将modals的数量传递给pop,或仅-1传递给pop直到根目录。对于
ios5
,支持动画
=是(视图将按顺序隐藏)和完成
块:
+ (void)dismissAllVCsForVC:(UIViewController *)VC animated:(BOOL)animated completion:(BPSimpleBlock)completion {
if (VC.presentedViewController == nil) {
if (completion) {
completion();
}
} else {
[BaseViewController dismissAllVCsForVC:VC.presentedViewController
animated:animated
completion:
^{
[VC dismissViewControllerAnimated:animated completion:completion];
}];
}
}
使用下面的代码
[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];
要弹出到根视图控制器,只需执行以下操作:[self.navigationController popToRootViewControllerAnimated:YES]代码>,而不是你的方式,这是一个有点不方便。它是目前模态视图控制器,我如何才能弹出它
[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];