经过一段时间寻找答案后,我不得不承认我对此案感到非常困惑。
在我的工作中,我被要求做一些非常具体的事情:
我必须在之前的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!
我真的不知道如何能够在下一个ViewController viewDidAppear中保留当前UIViewController的跟踪以解除它,以确保屏幕上没有“停电”。
提前感谢您的帮助!
答案 0 :(得分:0)
试试这段代码:
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];
}];