1

我有一个相当简单的应用程序,它是一个适合小孩子的游戏。有一个主屏幕和 5 个单独的级别。5 个级别中的 3 个由多个 VC 组成,其中动作发生在该行中的第一个 VC 中,然后代码调用模态 segue 到该行中的下一个,依此类推,直到它到达行的末尾和一个modal segue 被称为链接回主屏幕。只有一个 VC 的级别只是执行操作,然后转回主 VC。

应用程序中的每个 segue 都是模态的。此外,每个页面(VC)都有一个主页按钮,如果按下该按钮将转到主页

我在 StoryBoard 中设置了这一切,并且在视觉上一切都按预期工作,但是当添加声音时,我意识到似乎存在一个主要问题。

如果我现在理解正确(也许我不理解),模态序列实际上并没有用新请求的 VC 替换当前的 VC,而是将新请求的 VC 滑到原来的上方并使其成为可见显示。

目前我从 main 转到 level 1。Level 1 做了一些事情并播放一些通过计时器重复的声音。如果我在视觉上继续回到主界面,一切都很好,除了 1 级 VC 中的计时器正在播放的声音继续播放并且 xCdoe 多次给我以下错误

2013-01-21 22:16:07.901 TTBetaDev[678:c07] Warning: Attempt to present <MainMenuViewController: 0x7e02f40> on <BonusViewController: 0x7ecbfa0> whose view is not in the window hierarchy!

下面是我的故事板的截图,以防我没有很好地解释布局。

应该如何设置它以允许我想要的导航?我需要采取哪些步骤才能将其应用于我已经在情节提要中构建的内容?还是我必须重新完成我所有的故事板工作?

我尝试了苹果 VC 文档,但我无法理解与我尝试做的事情有关的内容。

有人可以帮我解释一下吗

在此处输入图像描述

4

1 回答 1

1

你有前进和后退的序列。你不应该这样做。

例如 Look 和 Main 和 VC 2。

您有一个从 Main 到 VC 2 的 segue。这意味着 Main 会将 VC 2 呈现为模态视图控制器。

当 Main 执行此操作时,尽管它仍在 VC2 下方的堆栈中。

然后你有一个从 VC2 到 Main 的 segue。这意味着 VC2 将创建一个新的 Main 并以模态方式呈现它。如果您继续使用该应用程序,您将拥有多个 main 实例,并且所有其他 VC 和内存消耗都会猛增。

你需要做的是删除所有倒退的segues。(即像从 VC2 到 Main 的那个)

然后,当您想从 VC2 回到 main 时,您必须关闭 VC2。

IE

在主要...

//present VC2
[self performSegueWithIdentifier:@"VC2Segue" sender:nil];

//dismiss VC2
[self dismissViewController:vc2ViewControllerInstance];

或者在 VC2...

//dismiss VC2 from itself
[self dismissViewController:self];

但最主要的是你不能使用segues来倒退。

TL:博士

什么都不应该继续 INTO Main。任何进入 main 左侧的 segues 都应该被删除并正确处理。

于 2013-01-22T08:00:00.103 回答