2013-02-01 24 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

相關問題