2010-05-18 82 views
1

林有添加到我的場景一個新的觀點麻煩少量的,我有這樣的代碼:iPhone/iPad的添加添加和刪除子視圖不工作

- (void) showMyDayView { 
NSLog(@"My Day View was touched"); 

MyDayViewController *temp = [[MyDayViewController alloc] initWithNibName: @"MyDayView" bundle:nil]; 
self.myDayViewController = temp; 

NSLog(@"superview: %@", [[self mainNavView] superview]); 
[[self mainNavView] removeFromSuperview]; 
NSLog(@"after removal main: %@", [self mainNavView]); 
NSLog(@"after removal view: %@", [self view]); 
NSLog(@"after removal superview: %@", [[self view] superview]); 

[[[self view] superview] addSubview: [self.myDayViewController view]]; 

[temp release]; 
} 

當我運行此代碼,控制檯說:「刪除後超視圖:(空)」

所以當我添加到superview的子視圖,沒有任何反應,因爲superview是空的。

任何想法?

感謝 馬克

回答

1

如果你想重用你要removeFromSuperview一個視圖,你必須先保留。 removeFromSuperview釋放它被調用的任何視圖。

所以......

[[self mainNavView] retain] 
[[self mainNavView] removeFromSuperview]; 

而[自mainNavView]仍然可以放心使用。

+0

所以是爲什麼superview由於mainNavView被釋放而被設爲null的原因? – Mark 2010-05-18 04:18:54

+0

但仍然在添加保留後,它仍然消失 – Mark 2010-05-18 04:22:12

+0

必須有其他東西釋放它,然後添加保留負責removeFromSuperview。我仍然對你在做什麼感到困惑,沒有給出你所有觀點的身份和功能。 – 2010-05-18 04:27:32