2011-06-22 20 views
1

我在我的應用程序中有5個選項卡,第五個選項卡是設置選項卡,(UINavigationController裏面),其中一個選項是用戶可以編輯個人信息和選擇個人資料圖片。所有的視圖和控制器都是由iOS發佈並重新創建的。所有的視圖和控制器都被釋放並且被iOS重新創建。用戶在設置中更新並且未保存的所有內容都消失了。UIImagePickerController發佈我的視圖和控制器

怎樣才能避免這種情況?

注意:我使用UIImagePickerController的單例實例,沒有發現與儀器泄漏。當我啓動選取器時,「接收到的記憶警告。等級= 1」不斷出現。

你會成爲一個救星 - 謝謝!

- 編輯 -

發現:

我使用的是自定義標籤欄(UIView的),所以在設置我被呈現從該自定義標籤欄控制器的UIImagePickerController模態(這是主要的應用程序)(否則選擇器會在它下面)。

我重建了標籤欄,所以現在自定義視圖只是標準UITabBar上的子視圖,現在我正在調用[self presentModalViewController:imagePickerController animated:YES];在我的應用程序設置中,它工作得很好。

所以,結論是,當你從另一個控制器而不是從「自我」呈現圖像時,圖像選取器會奇怪地動作。

+2

請提供您使用顯示的UIImagePickerController – Preston

回答

0

聽起來像你沒有妥善處理內存警告。在模擬器中,您可以選擇「模擬內存警告」來模擬發生的情況。

長話短說,如果視圖沒有超級視圖,-[UIViewController didReceiveMemoryWarning]會釋放它的視圖。有三種簡單的方法可以解決這個問題:

  • 重寫-didReceiveMemoryWarning什麼都不做。
  • 將狀態保存在-viewDidDisappear:中,應始終在卸載視圖之前調用它(除非視圖從未出現在第一位)。
  • 保存狀態爲用戶編輯它,或者通過立即保持它(如果你沒有取消按鈕)或視圖控制器中的屬性/ ivar(如果你只想保存,如果用戶不單擊取消) 。

您可能還需要考慮一下,如果您的應用程序中背景和殺害發生了什麼......

+0

代碼>長的故事是 - [UIViewController中didReceiveMemoryWarning]如果視圖沒有超級視圖,則釋放其視圖。 我認爲這是問題的關鍵。謝謝! – romaonthego

0

您可以做的是爲所有字段創建變量,並將用戶字段的內容寫入這些變量,然後在獲取或取消圖像時,將所有這些字段寫回並釋放變量。基本上你暫時保存所有的字段,然後恢復它們。

相關問題