2015-09-26 87 views
1

我正在開發一個基於iOS 9的SDK的應用程序,這是我第一次使用Storyboards,我有20個視圖控制器,每個場景都有Next/Previous按鈕可以前後移動。前程無憂!如果我從場景1移動到例如場景15,我收到內存警告,然後應用程序崩潰。我已經搜索,似乎有方法稱爲unwind segue,但似乎這是回去!這就像dissMiss方法。故事板緩存和接收內存警告

我每個場景與線連接在Interface Builder:

enter image description here

這裏是賽格瑞的設置:

enter image description here

,如果你幫我走出我將不勝感激。

編輯:

我試圖以編程方式呈現視圖控制器,但結果是一樣的! 。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    WhatIsDino *vc = (WhatIsDino*)[mainStoryboard instantiateViewControllerWithIdentifier:@"WID"]; 
    [self presentViewController:vc animated:YES completion:nil]; 
+0

記憶警告是在您第一次從1變爲15時發生的,還是會開始後一點? –

+0

故事板遊戲不應該指向前一個場景。相反,關閉呈現的視圖控制器。最簡單的方法就是放鬆休息。 – jlehr

+0

@AbubakrDar內存將在每個場景顯示後佔用。 –

回答

2

似乎這是一個錯誤的方法問題,而不是故事板。

讓我猜,因爲之前你點擊箭頭按鈕,故事板之前你用來改變你的應用程序的rootViewController到下一個/上一個屏幕。因此,一旦您設置了新的rootViewController,之前的屏幕就會釋放並從內存中釋放。

現在你有模式呈現每一個視圖控制器,其中涉及創建新UIWindow和加載所有層次的你的屏幕和保持以前的下面新建一個所以其持有的內存和你一起離開內存崩潰。

那麼,你可以用故事板做rootViewController的方法,因爲它只是另一種在開發過程中管理屏幕的方式。故事板提供了附加功能,如賽格,靜態表格視圖單元格,一般色調顏色等。 [UIStoryboard -instantiateViewControllerWithIdentifier:]是您可能會感興趣的方法。

但我寧願推薦你去看看UIPageViewController,它就像一個屏幕容器。不幸的是,它不能在你的場景中出現(因爲賽格的特殊方式),所以你必須使用-instantiateViewControllerWithIdentifier:方法。您可以像對待rootViewController之前那樣對待UIPageViewController的內部視圖控制器。

+0

對不起,我只是改變了從segues到編程的模式轉換,但結果是一樣的! ! !你有任何示例代碼或什麼? –

+0

使用這段代碼(查看我編輯過的問題)和相同的結果 –

+0

是的,結果確實是一樣的 - 你的代碼基本上和segue做的一樣。你應該改用'UIPageViewController'或回到'rootViewController'方法(後者不是一個好的解決方案)。在頁面視圖控制器上使用' - setViewControllers:direction:animated:completion:'方法更新屏幕 - 而不是最後一行。互聯網上有很多教程。翻過這個。您可以忽略設置委託http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ – ReDetection

0

您還可以導航,無需繼續和我認爲簡單的方法。

如果您想從Class1導航到Class 2,請按照下列步驟操作。

1)在Class 1中,導入Class2。

2)在你的按鈕Action中,寫下這段代碼。

Class2 * next = [self.storyboard instantiateViewControllerWithIdentifier:@「Class2 Identifier name」]; [self。navigationController pushViewController:next animated:YES];

不要忘記在故事板中給出特定類的屬性檢查器中的「故事板ID」中的標識符名稱。

不需要添加塞格,你的故事板看起來很乾淨。

+0

沒有成功,導致相同的問題 –

+0

在我的一個相同的情況下,它爲我工作!您可能需要使用其他解決方案。祝您好運! –

0

問題是,您正在視圖控制器後添加視圖控制器與模態演示文稿。這會導致每個視圖控制器都被添加到前一個視圖控制器之上,並且所有這些視圖控制器都會使用越來越多的內存進行累加。

使用導航控制器和按鈕也將視圖控制器堆疊在一起。

如果您使用storyboard,nibs或手動創建視圖控制器,則會出現此問題。

如果你有一個設計,用戶可以在一系列視圖控制器中移動,那麼你可能想在推送/呈現一個新視圖控制器之前關閉前一個。

您可以不使用動畫關閉以前的視圖控制器,然後在每次要顯示新視圖控制器時都顯示新的視圖控制器並避免內存問題。我不得不試驗它以獲得我之後的效果,但這就是我的建議。

+0

謝謝!我想我必須改變用戶界面並製作菜單!或者類似的東西 –