IOS:管理一些viewcontroller并一次性退出

IOS:管理一些viewcontroller并一次性退出,ios,objective-c,uiviewcontroller,modalviewcontroller,Ios,Objective C,Uiviewcontroller,Modalviewcontroller,我有以下代码: appDelegate.firstViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"firstviewcontroller"]; appDelegate.secondviewcontroller = [self.storyboard instantiateViewControllerWithIdentifier:@"secondviewcontroller"];

我有以下代码:

    appDelegate.firstViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"firstviewcontroller"];
    appDelegate.secondviewcontroller = [self.storyboard instantiateViewControllerWithIdentifier:@"secondviewcontroller"];
    appDelegate.thirdViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"thirdviewcontroller"];
    appDelegate.fourthviewcontroller = [self.storyboard instantiateViewControllerWithIdentifier:@"fourthviewcontroller"];

    [self presentViewController:appDelegate.firstViewController animated:YES completion:nil];
现在,通过这种方式,我分配了这些ViewController,并以“presentViewController”的模式打开了firstviewcontroller。 好的,当我打开firstviewcontroller时,我想管理其中的所有其他viewcontroller。 在firstviewcontroller中,我有四个按钮可以在第二个、第三个或第四个位置通过,在第二个ViewController中,我有四个按钮可以切换到第一个、第三个或第四个ecc

要将一个viewcontroller切换到另一个,我应该使用什么指令? 如果我想退出所有的游戏?我只是打电话

[self dismissViewControllerAnimated:YES completion:nil];


谢谢

您应该使用容器视图控制器来执行此操作。您可以创建一个新的自定义类或子类
UINavigationController
,或按原样使用它。这样,您就可以通过
viewControllers
方法访问所有这些VCs,从而使它们保持活动状态,并提供它们之间的转换

你可以找到更多的信息。您可以查看实现容器视图控制器部分


您肯定应该看看。

也许您应该使用tabbarcontroller;-)是的…它似乎是一个tabbarcontroller,但我不想要它:-)我可以使用类型为:[self.view addSubview:appDelegate.secondviewcontroller.view]的表达式吗;当我调用一个viewcontroller时,我用removefromsuperview删除了最后一个,你认为呢?容器视图控制器的目的是从同一个对象管理其堆栈中的所有VC,在这种情况下,最好通过访问“[container childViewController];”来访问这些VC。您可以找到许多容器视图控制器的好例子。更清楚地说,UINavigationController是一个具有子视图控制器的容器视图控制器。使用appDelegate可能不是一个好主意。我将appDelegate用于控制器,因为我需要视图控制器存储其当前状态…如果将自定义容器视图控制器实例设置为窗口的根视图控制器,并将其他视图控制器添加为该实例的子视图控制器,它们将存储其当前状态。在这一点之后,您的所有VCs都处于活动状态,但用户只能看到其中一个,而其他VCs则在后台等待。转换将由您的自定义容器视图控制器处理,您可以通过查看我的答案中提供的链接了解如何进行转换。从VC1转到VC2时,删除VC1的视图并将VC2的视图添加为子视图,仅此而已。