2012-01-04 88 views
0

我很麻煩。查看基於iPhone的應用程序子視圖刪除?

我添加了這樣的其他視圖。

haberdetay *detayview = [[haberdetay alloc] initWithNibName:@"haberdetay" bundle:nil]; 

CATransition *transition = [CATransition animation]; 
transition.duration = 0.25; 
transition.type = kCATransitionPush; 
transition.subtype = kCATransitionFromRight; 
[self.view.layer addAnimation:transition forKey:nil]; 

[self.view addSubview:detayview.view]; 

此視圖打開另一個視圖,另一個可能。然後用戶觸摸主圖標。這所有視圖都使用內存。我如何刪除它們。我正在嘗試

NSArray * subviews = [self.view subviews]; 
for(UIView * aSubview in subviews) 
{ 
    // this removes and releases the subviews you allocated 
    [aSubview removeFromSuperview]; 
} 

此訪問haberdetay的子視圖,但我必須訪問所有子視圖才能刪除或訪問它們。

如你所知,我很困惑:)如果你瞭解我,請告訴我,我該怎麼辦? :)

回答

1

您應該使用pushViewController或presentModalViewController,而不是在另一個Viewcontroller中添加一個Viewcontroller的視圖,並且當您想要返回時可以使用popViewController或dismissModalViewController,這也有助於內存管理。

+0

mainwindow具有基於視圖的viewcontroller,我會將其更改爲導航視圖控制器。而這種方法將會完美運行,對吧?最後一個,我應該將導航控制器添加到其他xib文件嗎? – 2012-01-05 07:44:51

1

我想你想[self.navigationController pushViewController:haberdetay animated:YES];這將緩存您以前的視圖,所以它不會被釋放。它還將處理動畫,以及爲您添加和刪除主要視圖。此外,沖洗這樣的視圖,尤其是主self.view是一個非常糟糕的主意。

+0

我明白了,謝謝。我想這樣。我應該分配haberdetay嗎? – 2012-01-05 07:48:45

+0

我分開了,它的工作,謝謝:) – 2012-01-05 13:10:46

+0

沒問題。在沒有便利方法時始終進行alloc和init。 – CodaFi 2012-01-05 18:04:34

相關問題