2013-02-01 22 views
0

我有一个应用程序具有以下基本布局,请理解我做了很多编程,但我相对较新的IOS,我还没有围绕故事板/仍然适当地继续。处理与内存密集型应用程序的segues /故事板

实际上,我的应用程序有以下屏幕:

WelcomeViewConroller --- ModalSeque - > MenuViewController --modalSegue ---> newProjectVC || loadprojectVC --- modalSegue - > ProjectScreenVC。

从项目的屏幕上,用户可以返回到menuVC屏幕。

现在,我明白每个segue都会创建一个视图控制器的新实例,这非常棒,我希望这会发生,但是,当我从我的ProjectScreen中退出,然后再次重新进入时,我会得到一个巨大的内存泄漏和非常奇怪的行为。

据我所知,我需要关闭我的视图控制器,特别是当我离开它时,我的ProjectScreen,但是,无论我尝试什么,我都无法得到此发生。

任何帮助将不胜感激。

+0

除非进行原型设计,否则不应使用故事板。 – dasdom

+1

@dasdom你为什么这么说?故事板是一种开发工具,而不是原型工具。如果他调用'presentViewController'去下一个NIB的视图控制器,或者他正在使用故事板,user1532122将会是相同的问题。 – Rob

+0

**首先,在这种情况下,您不使用模态继续。您应该使用push segue并使用导航数组返回任何屏幕。应该使用模态segue来显示关于视图控制器的一个页面信息。 –

回答

3

How should I chain viewcontrollers in xcode storyboard?我列举了一系列回顾故事板中多个场景的方法。但总之,这两个最简单的选项是:

  1. 开卷塞格斯:如果只支持的iOS 6或更高版本,使用开卷塞格斯。因此,举例来说,在主菜单的视图控制器,实行开卷赛格瑞:

    - (IBAction)gotoMainMenu:(UIStoryboardSegue *)segue 
    { 
        // if you need to do anything when you return to the main menu, do it here 
    } 
    

    同时一定要限定在主菜单的.H。然后控制 +从您希望SEGUE在现场面板下方的“退出”按钮,并选择“gotoMainMenu”选项按钮拖动:

    hook up unwind segue

  2. 导航控制器:如果你需要iOS 5的支持,那么只需使用导航控制器,并用push segues替换模态。然后您可以使用popToViewControllerpopToRootViewControllerAnimated跳回多个场景。如果你不想显示导航栏,然后在你的故事板中选择导航控制器,并在属性检查器中,取消选中“显示导航栏”:

    uncheck shows navigation bar

    在这种情况下,我倒认为确保你的菜单场景是最简单的(并且让它在欢迎屏幕上绕行一圈,就像我在其他答案的第4点中讨论的那样),在这种情况下,只要你想返回,就可以拨打popToRootViewController主菜单。但是,如果主菜单不是根视图控制器,并且想要弹出它,则可以将点菜单控制器从一个场景传递到另一个场景,或者随后可以让呈现的视图控制器在执行下列操作时执行下列操作想回到主菜单:

    for (UIViewController *controller in [self.navigationController viewControllers]) 
    { 
        if ([controller isKindOfClass:[MenuViewController class]]) 
        { 
         [self.navigationController popToViewController:controller animated:YES]; 
         break; 
        } 
    } 
    

别处在堆栈溢出,你会看到人们考虑的方式来嵌套调用dismissViewControllerAnimated,或类似的其他变化。我个人认为,导航控制器和放松segues更容易,更优雅。

+0

谢谢,这正是我正在寻找的。 – tombroomfield

相关问题