【问题标题】:dismissViewControllerAnimated prevents new UIViewController from showingdismissViewControllerAnimated 阻止新的 UIViewController 显示
【发布时间】:2013-10-11 22:55:28
【问题描述】:

我正在尝试将一个UIViewController 替换为另一个,但是我遇到了一个问题。

如果我写这个

[self dismissViewControllerAnimated:NO completion:nil];
//load currentProjectListViewController
currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];
[self presentViewController:currentProjectListViewController animated:NO completion:nil];

这几乎可以工作,但是视图只是闪烁并且没有任何反应.. 没有加载新视图或任何东西,我在 currentProjectListViewController 中设置了一个断点并且线程永远不会在那里。

但是,如果我这样做。

//load currentProjectListViewController
currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];

[self presentViewController:currentProjectListViewController animated:NO completion:nil];

currentProjectListViewController 加载非常好。但是我担心以前的观点会发生什么?它卡在内存中了吗?还是消失了?

我的问题是如何在不阻止下一个视图出现的情况下将其从内存和站点中删除。

任何帮助将不胜感激。

【问题讨论】:

  • 描述你的视图控制器层次结构。
  • 考虑静态视图。与对方没有任何联系。通常,如果我制作的东西超过 2 个视图,我会使用导航控制器。但是这个应用程序有 5 个,我的老板希望我将它们设为静态。所以在任何时候,如果应用程序从内存中关闭,我可以直接将它打开到它所在的同一视图,而不必担心其他视图会如何反应。

标签: ios objective-c uiviewcontroller


【解决方案1】:

不,就我看来,第二种方式是正确的方式。在第一种方法中,您要求 VC 在新的 VC 出现之前解散。这将是没有视图,这不会发生。 Bu呈现一个新的VC,旧的VC不会保留在内存中,因为视图的本质是它只在视图中使用内存。我希望这是有道理的。

【讨论】:

  • 好吧,这听起来对我来说很有意义。我很想尝试做更多的调试,看看是不是这样..
  • 其实,我刚才一直在做一些调试,我不确定你的说法是否正确。当我加载旧视图备份时,它甚至从不调用其中的任何方法,如 viewdidload。所以就像它只是坐在那里直到我加载的视图被删除。
【解决方案2】:

尝试在dismiss方法调用的完成处理程序中呈现新的视图控制器:

typeof(self) __weak weakSelf = self; //Need to have a weak reference to self to prevent retain cycle.
[self dismissViewControllerAnimated:NO completion:^{
    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];
    [weakSelf presentViewController:currentProjectListViewController animated:NO completion:nil];
}];

【讨论】:

  • 出于某种奇怪的原因,如果我在大括号内放置一个断点,则线程永远不会进入代码的那部分。我已经尝试了几次,它只是不会加载新视图。
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多