目前视图控制器不工作

时间:2014-06-20 08:29:51

标签: ios uiviewcontroller

您好我正在开发一个应用程序,我在其中使用

呈现新的UIViewController
[self presentViewController:VC animated:NO completion:nil];

在新呈现的视图控制器中,我将使用

移回上一个视图
[self presentViewController:oldVC animated:NO completion:nil];

这是我的要求,因为无法保证此视图的显示位置。

但问题是,当我呈现旧视图控制器时,它会转到viewDidLoad,但不会显示旧视图控制器,它会保留在同一视图控制器上。

任何人都可以告诉我为什么会发生这样的事情吗?

3 个答案:

答案 0 :(得分:0)

您不应该通过presentViewController:返回上一个视图控制器,因为它可能会导致永无止境的循环,如果用户这样做,那么您的应用迟早会崩溃。
但如果需要该动画(即从下到上动画),那么您可以创建自己的dismissViewController方法,该方法将动画您的oldVC从动画调用[self dismissViewControllerAnimated:NO completion:nil]的底部到上部以及完成块。

答案 1 :(得分:0)

找到我的问题的解决方案! 我没有使用presentViewController:dismissViewController:方法,而是根据segue的标识符创建了segue并要求应用程序按照所需的流程以编程方式执行segue。找到https://stackoverflow.com/a/21241276/1882781

的解决方案

答案 2 :(得分:0)

只是一个指针。 segue方法肯定会起作用。但是,如果您使用此方法呈现view controller 模态,那么之前的view controller将保留在memory中,直到您手动dismiss
这将导致应用程序使用的严重memory问题。

一个更好的选择,即使不是最好的选择,也可以获得AppDelegate 单个共享实例的句柄,并将其rootViewController设置为您的呈现{ {1}}。

例如: -

viewController

这将从内存中释放现有的yourViewControllerClassName *sampleVC = [[yourViewControllerClassName alloc] init]; [self presentViewController:sampleVC animated:YES completion:^{ yourAppDelegateClassName *appdelegate = [UIApplication sharedApplication].delegate; appdelegate.window.rootViewController = sampleVC; }]; 对象。

PS:确保在所有课程中导入viewController文件,或者您也可以在 .pch 文件中将其写入。

希望这有帮助! :)