2010-09-30 77 views
1

我創建了一個類似於iOS地址簿的UITableView,允許您在一行上選擇圖像,並且還有其他具有用於輸入數據的文本字段的自定義單元。我只有在加載大圖像並在控制檯中獲得內存警告後才遇到此問題:內存警告後UITableView滾動問題

收到內存警告。級別= 1

我在模態視圖中使用UIImagePickerController加載圖像。

所以,當內存不足的警告時,我的父母tableviewcontroller做了viewDidUnload,裏面是空的:

- (void)viewDidUnload { } 

一旦我關閉模式視圖(選擇圖像)時,tableview中重新加載數據,一切都顯示正常...但是,滾動無法正常工作。行爲非常奇怪:滾動不會停留在某個點上。我可以從字面上一直拖動滾動,但是一旦我釋放,滾動就會反彈回來並隱藏底部細胞(這看起來很正常)。

對於我的生活,我無法弄清楚發生了什麼,爲什麼這隻發生在記憶警告後。

這隻發生在我的iPhone上(使用iPhone 4進行測試)。這進一步導致我相信內存警告可能是我的問題的根源。

+0

我有完全相同的問題。你找出原因了嗎? – 2011-11-27 11:02:25

回答

0

您在[loadView]或[viewDidLoad]中設置的所有內容應該在[viewDidUnload]中清除。另一種方式:應該在[loadView]或[viewDidLoad]中重新創建並重新初始化[viewDidUnload]中銷燬的所有內容。

您應該將其視爲輔助init/dealloc序列。

+0

我現在這樣做,所以我的viewDidUnload將對象設置爲無法在viewDidLoad中分配,雖然這是很好的建議,但不幸的是不能解決滾動鎖問題。 – Kevin 2010-10-02 19:01:54

+0

注意:將對象設置爲零不會釋放它。 – 2010-10-03 08:59:20

+0

我認爲他的意思是用setter將它設置爲零 – 2011-11-27 11:02:03

1

我有一個工作。在顯示模態視圖之前,您應該關閉鍵盤並等待其解除。

0

設置-(void)viewDidUnload;空是在這方面肯定是不對的,因爲至少應調用[super viewDidUnload];否則,你將有兩個表視圖(甚至更多),因爲控制器將保持他們創造的-(void)loadView;