我正在开发的应用程序有五个视图控制器。
让我们将它们称为A,B,C,D和E,将A作为根视图控制器。
A将有四个按钮导航到每个其他视图控制器。同样,B,C,D和E将分别有四个按钮导航到所有其他视图控制器。
使用presentViewController:
来实现导航是一个好主意,因为视图控制器的关系中没有明确的层次结构?我不认为我清楚地理解所呈现的与主持人的关系。
呈现的视图控制器的解雇是否必须由演示者处理?
假设A呈现B,然后B呈现C,然后C呈现A.是否释放/解除了任何控制器?谁在解雇谁?当A最终出现时,B还在记忆中吗?
我想到的另一种方法是设计和编写View Controller Container并管理所有视图控制器。我知道这不是一个容易走的地方。
哪一个更有意义?
答案 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;
}