移动到任何其他视图控制器中的任何一个

时间:2014-03-23 00:33:57

标签: ios uiviewcontroller

我正在开发的应用程序有五个视图控制器。

让我们将它们称为A,B,C,D和E,将A作为根视图控制器。

A将有四个按钮导航到每个其他视图控制器。同样,B,C,D和E将分别有四个按钮导航到所有其他视图控制器。

使用presentViewController:来实现导航是一个好主意,因为视图控制器的关系中没有明确的层次结构?我不认为我清楚地理解所呈现的与主持人的关系。

呈现的视图控制器的解雇是否必须由演示者处理?

假设A呈现B,然后B呈现C,然后C呈现A.是否释放/解除了任何控制器?谁在解雇谁?当A最终出现时,B还在记忆中吗?

我想到的另一种方法是设计和编写View Controller Container并管理所有视图控制器。我知道这不是一个容易走的地方。

哪一个更有意义?

2 个答案:

答案 0 :(得分:1)

如果您的情况是 5个视图控制器实例并且您只使用相同的,则必须使用容器解决方案。如果你使用相同的实例,你每次只分配这个5,所以你没有问题。

如果相反,您需要使用新实例进行深度导航,并且在返回后(如导航控制器),每次新的视图控制器和返回时都会实例化最佳解决方案以前,最后一个被驳回。

<强> N.B。如果您需要深入打开多个实例但可能没有返回(如导航控制器),则需要使用第一个解决方案,因为您必须为每个视图控制器使用1个实例。

答案 1 :(得分:1)

您可以使用 UINavigationController 将新控制器推送到堆栈。如果您不希望用户返回(这意味着不将旧视图控制器保留在堆栈中),您只需将新分配的视图控制器设置为根vc:

-(void)buttonAPressed:(UIButton *)button {
    AViewController *vc = [[AViewController alloc] init];
    self.view.window.rootViewController = vc;
}