iOs中的dismissModalViewController问题

时间:2012-07-24 08:45:11

标签: iphone uiviewcontroller navigation presentmodalviewcontroller dismiss

我有三个视图控制器,比如A,B和C.我正在浏览这些视图,如下所示;

A -presenting-> B -presenting-> C -presenting->的

B ,如果我解雇,我想导航到 C 。但不是那样,现在它正转向 A 。我无法使用解除从 C B (某些内部问题)的导航。那么我该如何解决这个问题呢?请帮忙。

2 个答案:

答案 0 :(得分:1)

您遇到了dismissModalViewController的限制:它会删除所有模态视图(source):

  

如果连续呈现多个视图控制器,从而构建一堆呈现的视图控制器,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器以及堆栈上该子视图上方的所有视图控制器。发生这种情况时,只有最顶层的视图以动画方式被删除;任何中间视图控制器都可以从堆栈中删除。最顶层的视图使用其模态过渡样式被忽略,这可能与堆栈中较低的其他视图控制器使用的样式不同。

你可以做的是使用UINavigationController,只需根据你的要求推送/弹出控制器。

或者,您可以直接在顶视图上调用addSubview并确保它们覆盖整个屏幕,并确保正确保留/释放管理控制器,从而显示由您拥有的各种控制器管理的视图(当您将其添加/删除到另一个视图时,视图会自动显示。)

作为提示,你可以这样做:

  1. 您拥有presentModal...,使用addSubview;

  2. 您拥有dismiss...,使用removeFromSuperview;

  3. 存储对您管理的视图的任何视图控制器的引用,就像我在retain / strong属性中建议的那样。

答案 1 :(得分:0)

您可以在“C”视图控制器中使用以下代码

[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];