经过一段时间的寻找答案后,我不得不承认我对这种情况非常困惑。
在工作中,我被要求做一些非常具体的事情:
我必须在先前的UIViewController上呈现一个UIViewController,实际上,当前的ViewController在第二个出现之前就关闭了自身。这给整个事情带来了一个有趣的动画,一个ViewController下降,然后又从底部上升。但是...并不是真正的“专业版”,在动画制作过程中,我们可以在幕后看到rootViewController。
因此,我必须精确地确定,没有NavigationController,在我看来,这会使它变得容易得多,所以我不得不使用两个UIViewController来做到这一点,并且有我的实际代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"userViewController"];
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:controller animated:YES completion:^{
[self dismissViewControllerAnimated:YES completion:nil];
}];
它是在按下按钮后立即调用的,因此我认为实际的ViewController viewDidLoad或viewDidAppear没有问题。
但是每次运行此代码时,都会出现以下错误:
[1163:17641] Warning: Attempt to present <UserViewController: 0x7b0f0a00> on <EIHomeViewController: 0x7b0d2a00> whose view is not in the window hierarchy!
我真的不知道如何设法跟踪当前的UIViewController以便在下一个ViewController viewDidAppear中关闭它,以确保屏幕上不会出现“停电”。
提前谢谢你的帮助!
最佳答案
试试这个代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"userViewController"];
[self dismissViewControllerAnimated:NO completion:^{
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:controller animated:NO completion:nil];
}];
关于ios - 有没有办法在呈现另一个ViewController之后将其关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420125/