如何呈现第二个ViewController&解雇第一个

时间:2012-03-07 12:43:53

标签: iphone viewcontroller

在父ViewController中使用以下代码,我想在第一个上面显示第二个视图,然后关闭第一个:

// Animates the next questionViewController using the first questionViewController
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil];

// Dismiss the first questionViewController
[previousView dismissViewControllerAnimated:NO completion:nil];

运行时,会显示第二个视图,但第一个视图不会被忽略。

5 个答案:

答案 0 :(得分:12)

您需要首先关闭“previousView”&然后出现“nextQuestionViewController”:

// Dismiss the first questionViewController
[previousView dismissViewControllerAnimated:NO completion:nil];

// Animates the next questionViewController using the first questionViewController
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil];

答案 1 :(得分:4)

尝试

[self dismissViewControllerAnimated:NO completion:nil];

失败:

[self.navigationController popViewControllerAnimated:YES];

答案 2 :(得分:2)

我做了下一步(自我 - 是你的老控制者):

UIStoryboard *storyboard = self.storyboard;

[self dismissViewControllerAnimated:YES
                         completion:^{
        UIViewController *newController = [storyboard instantiateViewControllerWithIdentifier:@"newControllerStoryboardId"];
        newController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

        [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:newController animated:YES completion:nil];
    }];

答案 3 :(得分:0)

最好使用“放松搜索”:

https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html#//apple_ref/doc/uid/TP40007457-CH15-SW8

https://developer.apple.com/library/archive/technotes/tn2298/_index.html

它允许您同时关闭多个视图控制器,而不必知道堆栈中有多少个。而且,如果没有提供的视图控制器对需要导航回何处的专门知识(即您不必直接与窗口的根视图控制器联系),就可以了。

假设您有一个名为VC1的根视图控制器,第一个模式是VC2,第二个模式是VC3。

在VC1中,您将实现一个名为IBAction的{​​{1}}。然后,在VC3的情节提要中,将完成按钮连接到unwindToRoot对象,然后选择Exit操作。

按下该按钮时,系统将关闭将您带回到VC1所需的所有视图控制器。

因此,基本上,您只是将所有这些VC堆叠在一起,当您完成所有操作后,就将所有内容都退还给了根VC。

答案 4 :(得分:-2)

似乎不能在没有短暂显示A的情况下从B到C,这看起来不专业。但是,您可以将黑色子视图放在A的顶部,直到您将其设置为C。

有关代码,请参阅https://stackoverflow.com/a/45579371/218226

上的答案