在我的应用中,我想从我的初始视图控制器中呈现另一个视图控制器。
我尝试从故事板中实例化它,因为我希望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的强引用有关,但我不明白,为什么我宁愿让解决方案感觉干净。
如果有人能帮我解决这个问题,我会很高兴。
答案 0 :(得分:0)
尝试以下代码,
UIViewController *td=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.navigationController pushViewController:td animated:YES];
答案 1 :(得分:0)
好的,我真的很惭愧。
视图控制器始终存在。它只有“默认”背景颜色,让他看起来像关键窗口。
更改背景颜色只会改变背景颜色,而与参考颜色无关。
也许这可以帮助那些经历同样问题的人。 :)