提出的UIViewController在segue动画后消失

时间:2018-06-06 12:30:45

标签: ios objective-c xcode uiviewcontroller segue

在我的应用中,我想从我的初始视图控制器中呈现另一个视图控制器。

我尝试从故事板中实例化它,因为我希望segue在一段时间后自动执行。

UIViewController* secondViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:officialFirstViewController animated:YES completion:nil];  

在呈现secondViewController之后,就在segue动画完成时,视图控制器消失了,我看到一个黑屏(窗口?)。

我测试了一下,我了解到如果我在SecondViewController.m中做了一些事情,比如说。

self.view.backgroundColor = UIColor.orangeColor;

在viewDidLoad中,secondViewController不再消失 是这样,因为现在对secondViewController有一个强引用?

另外,如果我在呈现之前将secondViewController的modalPresentationStyle更改为UIModalPrestationOverFullScreen,它也不会消失:

UIViewController* officialFirstViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
officialFirstViewController.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:officialFirstViewController animated:YES completion:nil];

我相信,这两个解决方案与对secondViewController的强引用有关,但我不明白,为什么我宁愿让解决方案感觉干净。

如果有人能帮我解决这个问题,我会很高兴。

2 个答案:

答案 0 :(得分:0)

尝试以下代码,

 UIViewController *td=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];

 [self.navigationController pushViewController:td animated:YES];

答案 1 :(得分:0)

好的,我真的很惭愧。

视图控制器始终存在。它只有“默认”背景颜色,让他看起来像关键窗口。

更改背景颜色只会改变背景颜色,而与参考颜色无关。

也许这可以帮助那些经历同样问题的人。 :)