Ios 如何在添加其他UIViewController时从视图中删除UIViewController?

Ios 如何在添加其他UIViewController时从视图中删除UIViewController?,ios,uiviewcontroller,Ios,Uiviewcontroller,在一个视图控制器上,比如说,UIViewController1,我有一个UIButton实例,当我希望它从堆栈中删除当前控制器(self)并添加到另一个控制器上时,我们将其称为UIViewController2 -(IBAction) pressedButton: (id) sender { [self.view removeFromSuperview]; AppDelegate.rootViewController = [[UIViewController2 alloc] in

在一个视图控制器上,比如说,
UIViewController1
,我有一个UIButton实例,当我希望它从堆栈中删除当前控制器(self)并添加到另一个控制器上时,我们将其称为
UIViewController2

-(IBAction) pressedButton: (id) sender {
    [self.view removeFromSuperview];
    AppDelegate.rootViewController = [[UIViewController2 alloc] init];
}

我知道这种方法不起作用,但是什么是实现这种方法的好方法呢?还是我对整个概念的理解不正确?

您可以使用以下两种方法来显示和取消视图控制器

出席:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
驳回:

- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion

您只需在“驳回”中将“动画”属性设置为“是”,在“当前”中将其设置为“否”,即可实现所需操作。您还可以使用完成块来链接视图控制器。

您是否尝试过使用viewcontroller Dismiss viewcontroller animated:YES on completion->present view controller animated:NO on completion块?可以!我不知道这个方法存在。但是我认为我写代码效率很低。我不认为我应该将视图控制器添加到其他视图控制器中。在另一个视图控制器上添加视图控制器是正常的,但修改应用程序委派根视图控制器是不正常的。因此,我应该使用单独的UIViewController作为根视图控制器,然后根据需要将控制器1和2添加到该堆栈中?是,如果您愿意,您可以让viewcontroller处理演示和取消演示。(顺便说一句,您也应该使用interface builder)