Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更正现有应用程序中VCs之间的导航_Ios_Xcode_Navigation_Uistoryboard_Uistoryboardsegue - Fatal编程技术网

Ios 更正现有应用程序中VCs之间的导航

Ios 更正现有应用程序中VCs之间的导航,ios,xcode,navigation,uistoryboard,uistoryboardsegue,Ios,Xcode,Navigation,Uistoryboard,Uistoryboardsegue,我有一个相当简单的应用程序,它是一个适合小孩子玩的游戏。有一个主屏幕和5个独立的级别。5个级别中的3个级别由多个VC组成,其中操作发生在该行的第一个VC中,然后代码调用一个模态序列到行中的下一个,依此类推,直到它到达行的末尾,并且调用一个模态序列链接回主屏幕。只有一个VC的级别只执行操作,然后返回主VC 应用程序中的每个segue都处于模态。 此外,每页(VC)都有一个主页按钮,按下该按钮后将转到主页 我把这一切都设置在故事板上,视觉上一切都像我期望的那样工作,但当添加声音时,我意识到似乎有一个

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

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

我把这一切都设置在故事板上,视觉上一切都像我期望的那样工作,但当添加声音时,我意识到似乎有一个大问题

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

目前,我从主要到一级。一级做一些事情,播放一些通过定时器重复的声音。如果我切换回主视觉,一切都很好,除了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!
2013-01-21 22:16:07.901 TTBetaDev[678:c07]警告:试图在不在窗口层次结构中的视图上显示!
下面是我的故事板截图,以防我没有充分解释布局

该如何设置以允许我想要的导航?A我需要采取什么步骤将其应用到我已经在故事板中构建的内容中?还是我必须重新做我所有的故事板工作

我尝试了苹果的VC文档,但我不明白我想做的是什么

有人能帮我解释一下吗


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

e、 g.外观和主要功能以及VC 2

你有一个从Main到VC2的序列。这意味着Main将以模态视图控制器的形式呈现VC2

当Main执行此操作时,尽管它仍然位于VC2下面的堆栈上

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

您需要做的是删除所有向后的分段。(即,与从VC2到Main的相同)

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

i、 e

大体上

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

//dismiss VC2
[self dismissViewController:vc2ViewControllerInstance];
或者在VC2中

//dismiss VC2 from itself
[self dismissViewController:self];
但最重要的是,你不能用分段来倒退

TL:DR


任何东西都不应该进入主要领域。任何进入主管道左侧的分段都应删除并妥善处理。

您有向前和向后的分段。你不应该这样做

e、 g.外观和主要功能以及VC 2

你有一个从Main到VC2的序列。这意味着Main将以模态视图控制器的形式呈现VC2

当Main执行此操作时,尽管它仍然位于VC2下面的堆栈上

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

您需要做的是删除所有向后的分段。(即,与从VC2到Main的相同)

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

i、 e

大体上

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

//dismiss VC2
[self dismissViewController:vc2ViewControllerInstance];
或者在VC2中

//dismiss VC2 from itself
[self dismissViewController:self];
但最重要的是,你不能用分段来倒退

TL:DR


任何东西都不应该进入主要领域。任何进入main左侧的分段都应删除并妥善处理。

非常感谢,这样做非常有意义。此外,为了重置显示的viewcontroller,我在viuewcontroller中创建了一个UIButton,并将该按钮与同一个view controller进行分段。根据你的解释,特别是内存问题,这可能是个坏主意。我应该如何“重置”视图控制器的内容和值,使其恢复到首次加载时的状态?我会创建一个名为“displayDefaultContent”的方法或其他方法。在这里设置所有默认数据。然后在viewDidLoad中运行[self-displayDefaultContent];按一下按钮,运行[self-displayDefaultContent];在任何需要重置视图的地方,都可以执行此操作。这很有意义。是否有一种方法可以轻松查询storyboad上所有ImageView的中心点,以便将它们放回原处。似乎我可以枚举对象并将它们的中心点存储在一个数组中,但我不知道如何做到这一点,但这听起来像我在正确的轨道上吗?嗯。。。您可以创建一个NSObject子类,该子类包含一个UI元素(比如UIImageView)和一个默认设置(可能是一个字典或只是一个CGPoint等等)。然后,当视图加载时,您可以遍历UIImageView并将设置存储在NSObject中,然后将NSObject放入数组中。或者别的什么。非常感谢,当你这样做的时候,这非常有意义。另外,为了重置显示的viewcontroller,我在viuewcontroller中创建了一个UIButton,并将该按钮切换回同一个view controller。根据你的解释,特别是内存问题,这可能是个坏主意。我应该如何“重置”视图控制器的内容和值,使其恢复到首次加载时的状态?我会创建一个名为“displayDefaultContent”的方法或其他方法。在这里设置所有默认数据。然后在viewDidLoad中运行[self-displayDefaultContent];按一下按钮,运行[self-displayDefaultContent];在任何需要重置视图的地方,都可以执行此操作。