2010-05-18 78 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