我有三个视图控制器,比如 A、B 和 C。我正在浏览这些视图,如下所示;
A -呈现-> B -呈现-> C -呈现-> B
从B,如果我解雇我想导航到C。但取而代之的是,现在它正在转移到A。我不能使用解除从C导航到B(一些内部问题)。那么我该如何解决这个问题呢?请帮忙。
我有三个视图控制器,比如 A、B 和 C。我正在浏览这些视图,如下所示;
A -呈现-> B -呈现-> C -呈现-> B
从B,如果我解雇我想导航到C。但取而代之的是,现在它正在转移到A。我不能使用解除从C导航到B(一些内部问题)。那么我该如何解决这个问题呢?请帮忙。
您遇到了以下限制dismissModalViewController
:它将删除您的所有模态视图(source):
如果您连续呈现几个视图控制器,从而构建一个呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法会关闭其直接子视图控制器以及堆栈上该子视图控制器上方的所有视图控制器。发生这种情况时,只有最顶层的视图会以动画方式消失;任何中间视图控制器都简单地从堆栈中删除。最顶层的视图使用其模态转换样式被解除,这可能与堆栈中其他视图控制器使用的样式不同。
您可以做的是UINavigationController
根据您的要求使用一个简单的推/弹出控制器。
或者,您可以通过直接调用addSubview
您的顶视图并确保它们覆盖整个屏幕并且正确保留/释放管理控制器来简单地显示由您拥有的各种控制器管理的视图(视图在您添加/删除时自动它到另一个视图)。
作为提示,您可以这样做:
在你有的地方presentModal...
,使用addSubview
;
在你有的地方dismiss...
,使用removeFromSuperview
;
存储对您管理其视图的任何视图控制器的引用,就像我在retain
/strong
属性中建议的那样。
您好在“C”视图控制器中使用以下代码
[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];