Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从其他任何视图控制器移动到多个视图控制器中的任何一个_Ios_Uiviewcontroller - Fatal编程技术网

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

Ios 从其他任何视图控制器移动到多个视图控制器中的任何一个,ios,uiviewcontroller,Ios,Uiviewcontroller,我正在开发的应用程序有五个视图控制器 让我们将它们称为A、B、C、D和E,并将A作为根视图控制器 将有四个按钮导航到其他每个视图控制器。类似地,B、C、D和E将分别有四个按钮来导航到所有其他视图控制器 使用presentViewController:来实现导航是否是一个好主意,因为视图控制器的关系中没有明确的层次结构?我想我不太清楚演示者和演示者之间的关系 演示视图控制器的解除是否必须由演示者处理 假设A呈现B,然后B呈现C,然后C呈现A。是否有任何控制器被释放/解除?谁在处理谁的解雇?当A最终

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

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

将有四个按钮导航到其他每个视图控制器。类似地,B、C、D和E将分别有四个按钮来导航到所有其他视图控制器

使用
presentViewController:
来实现导航是否是一个好主意,因为视图控制器的关系中没有明确的层次结构?我想我不太清楚演示者和演示者之间的关系

演示视图控制器的解除是否必须由演示者处理

假设A呈现B,然后B呈现C,然后C呈现A。是否有任何控制器被释放/解除?谁在处理谁的解雇?当A最终出现时,B还在内存中吗

我想到的另一种方法是设计和编写视图控制器容器,并管理所有视图控制器。我读到这不是一个容易走的领域


以下哪一项更有意义?

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

相反,如果您需要使用新实例进行深入导航,那么在返回后(如导航控制器),最好的解决方案是每次实例化一个新的视图控制器,当您返回上一个实例时,最后一个实例将被取消


N.B.如果需要深入打开多个实例,但可能无法返回(如导航控制器),则需要使用第一种解决方案,因为每个视图控制器必须使用一个实例。可以使用UINavigationController将新控制器推送到堆栈中。如果不希望用户返回(这意味着不在堆栈中保留旧的视图控制器),只需将新分配的视图控制器设置为根vc:

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

听起来您应该使用选项卡栏控制器。苹果在Cocoa Touch中已经有几个容器视图控制器。@Josh Caswell我肯定不想显示选项卡栏,也不想在屏幕上的不同位置放置按钮。我相信UITAB控制器可以定制。我会研究一下。这似乎是一个可行的解决方案,只是每次我们导航到一个控制器时,它都会被分配,并且可能在我们使用完它之后被释放。我来自C++背景,我不确定这么多的分配是否是个好主意。还有过渡风格呢?设置根视图控制器是否允许我们指定视图转换样式?@Ravi关于转换动画,您可以看看这个问题:@Ravi另外,当您将新控制器分配给根视图控制器时,如果旧控制器未从singleton类、应用程序委托或其他地方引用为强控制器,则旧控制器将被取消分配。谢谢Omer。我最终编写了自己的容器视图控制器。鉴于我的应用程序中ViewController的数量非常少,我认为可以在需要或不需要时分配/取消分配视图控制器。我想ARC会处理好的。