2010-06-19 56 views
2

我將在loadView中創建的所有子視圖設置爲viewDidUnload中的零。loadView在記憶體警告後無法正確加載我的視圖

我在模擬器中模擬內存警告,並通過viewDidUnload刪除了我的屏幕外的視圖及其子視圖。但是,當loadView在看到這些屏幕外視圖後再次被調用時,我的子視圖不會在第二次正確重新創建。例如,我的標籤和表視圖是空的,我在loadView創建:

CGRect frame = CGRectMake(0, 0, 400, 600); 
UIView *theView = [[UIView alloc] initWithFrame:frame]; 
self.view = theView; 
[theView release]; 

int w = frame.size.width; 
int h = frame.size.height; 
CGRect tblFrame = CGRectMake(0, h/10, w, h*7/10); 
UITableView *tblvw = [[UITableView alloc] initWithFrame:tblFrame style:UITableViewStylePlain]; 
tblvw.delegate = self; 
tblvw.dataSource = self; 
self.resourcesTblVw = tblvw; 
[tblvw release]; 
[self.view addSubview:resourcesTblVw]; 


CGRect lblFrame = CGRectMake(0, 0, w, 36); 
UILabel *lbl = [[UILabel alloc] initWithFrame:lblFrame]; 
lbl.font = [UIFont boldSystemFontOfSize:20]; 
lbl.backgroundColor = [UIColor colorWithWhite:0.7 alpha:1.0]; 
lbl.text = name; 
self.nameLabel = lbl; 
[lbl release]; 
[self.view addSubview:nameLabel]; 

想法?

回答

1

第一次猜測會發生這種情況,因爲第二次,執行加載viewdidload中的數據的代碼不在loadview方法中。所以複製從那裏您將數據加載到表等進入的loadView方法的代碼...

另一件事你可以做......的首選方案是創建這樣一個方法

例:

-(void)loadData { 
//enter code here to load all the tables and so on. 

} 

然後調用此方法時,認爲負荷......這應該工作,並呼籲在的loadView方法,這種方法....以便一旦您的內存警告後再次設置的意見都被加載。

PK

相關問題