ios - 有没有办法在呈现另一个ViewController之后将其关闭?

标签 ios cocoa-touch ios7 uiviewcontroller

经过一段时间的寻找答案后,我不得不承认我对这种情况非常困惑。

在工作中,我被要求做一些非常具体的事情:

我必须在先前的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/

相关文章:

ios - CGRect 放大动画在 Xcode 10 中不起作用?

ios - 标识符为 com.app.name 的应用程序 ID 不可用。请输入不同的字符串

ios - 带有 adjustsFontSizeToFitWidth 的多行 UILabel

ios - ARC 和 Objective C 子类化

ios - 在旧版本中运行 xcode 5 和 iOS7 更改

ios - 了解有关解析最新 SDK/Swift 1.2 的语法问题

ios - 如何在 xcode 6.3 界面生成器 Storyboard 中默认模拟指标?

iphone - 什么是差异。 b/w @property(非原子,分配)和@property(非原子,保留)

objective-c - UIView 中的签名

ios - 在 ios 中的表格单元格中单击按钮更改图像