2010-05-12 73 views
0

我有一個基於導航欄的應用程序,而在UIViewController中,我在選擇照片時出現內存警告。它被處理,但當我彈出viewcontroller並返回到頂級viewcontroller導航欄是空白的。其他一切都會重新加載,但不包括導航欄按鈕和標題。內存警告導致空白導航欄

我知道viewDidUnload是在頂層視圖控制器上調用的,當我回到它的時候,VC會再次使用viewDidLoad重新加載,但導航欄沒有加載到那裏,它來自mainwindow.xib。任何想法我做錯了什麼? (OS 3.2,iPad的)

編輯下面是從控制檯日誌顯示所發生的事情在內存警告時的摘錄:

09:55:25.864 -[PhotoBox setPhotoImage:] size {1536, 2048} 
09:55:26.169 -[PhotoBox setPhotoImage:] resized to {768, 1024} 
09:55:26.180 Received memory warning. Level=1 
09:55:26.236 ClockMakerVC: viewDidUnload 
09:55:26.240 -[ClockMakerVC didReceiveMemoryWarning] 
09:55:26.271 saving 1 state objs to /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:26.298 -[ItemSettingsVC didReceiveMemoryWarning] 

在這一點上我打的導航欄後退箭頭返回到父視圖控制器,這導致在其上的viewDidLoad中(因爲它先前被卸載):

09:55:44.477 read 1 state objs from /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:44.479 loadSavedItems: 295376119.689 opts=0 np=2 P=(284,402,200,200) L=(412,274,200,200) 1 PhotoBox 
09:55:44.484 ClockMakerVC: viewDidLoad: 1 saved items loaded 
+0

請發佈您的'記憶警告'的確切消息。這將有助於將您的問題傳達給此處的社區。 – 2010-05-12 17:14:09

+0

@Adam:我已經添加了內存警告以及日誌文件 – progrmr 2010-05-12 19:35:00

回答

1

按照documentation viewDidLoad中是」 ......用於在執行額外的初始化步驟從nib文件加載的視圖。「

我一直認爲viewDidLoad只被調用過一次,最近才意識到在內存警告(在視圖被卸載並在稍後重新加載之後)它是如何被再次調用的。

當我第二次調用viewDidLoad時,我的主視圖控制器的初始化代碼部分沒有正常工作。我修復了它的一部分,並將它的一部分移到了awakeFromNib中,並解決了這個問題。

+0

的哪些部分的具體相關部分? – 2010-10-17 02:33:16