0

我有一个非常糟糕的视图系统。我浏览了几个模态视图,然后想跳回我的原始视图(循环回自身)。唯一的问题是它会一直在其他视图之上分配新视图,直到我用完内存并且应用程序崩溃。我如何告诉我的应用程序我永远不会回到预览视图控制器并且它应该释放内存块?我想做这样的事情: self.presentingViewController = nil; 但它是只读的,我越想它就是不能那样工作。这是我的故事板。 在此处输入图像描述

4

1 回答 1

1

目前尚不完全清楚您在做什么以及为什么它不能按预期工作,但我认为以下方法应该适合您:

  1. 我从“根表视图”开始,然后我做一个模态

  2. *然后从带有“占位符”文本的视图中模态到游戏控制器

  3. 然后我想模态回到导航控制器/根表视图。

我假设你正在做 1. 和 2 使用– presentViewController:animated:completion:(或现在已弃用– presentModalViewController:animated:)。

为了执行 3.,您必须调用:

[self.presentingController dismissViewControllerAnimated:ZZZ completion:nil];

这会将所有模式视图控制器从根表视图中解散到您要解散的那个。

如果您已经在这样做并且它不能按您的意愿工作,我认为这可能是因为您正在关闭模态视图控制器并在同一个运行循环周期内呈现一个新的。要解决这个问题,只需在根控制器中定义一个方法,例如:

    - (void)presentFirstViewController {
        [self presentViewController:xxxxx animated:YES completion:nil];
    }

稍后您解雇模态控制器:

self.presenting.Controller dismissViewControllerAnimated:YES completion:nil];

并展示新的做:

[rootController performSelector:@selector(presentFirstViewController) withObject:nil afterDelay:0.0];

这最后一步将为运行循环提供一些时间来清理关闭时的内容,并依次呈现模态控制器。

希望这会有所帮助。

于 2012-12-24T22:21:14.357 回答