iOS - 如何在加载新视图后删除以前的视图?

时间:2011-08-30 05:50:48

标签: iphone ios multiview

我正在练习多视图,但遇到一个小问题。

当我的新视图加载后,我仍然可以看到以前的视图。

如何使previos视图不可见?

这是我的代码: -

- (IBAction)changeView:(id)sender 
{
    RedClass *red = [[RedClass alloc] initWithNibName:@"RedClass" bundle:nil];
    self.redClass = red;
    [red release];
    //[self.view removeFromSuperview];
    [self.view addSubview:redClass.view];        
}

这是一个截图: -

enter image description here

当我取消注释[self.view removeFromSuperview]时,我的红色视图甚至没有被加载。

任何帮助都将不胜感激。

由于

3 个答案:

答案 0 :(得分:2)

我认为您的红色视图的颜色可能是透明的。

所以请在你的redclass的nib文件中查看它。还要检查红色视图的alpha值,它必须为1.

您无法在此删除第一个视图。因为它可能会加载到窗口或其他控制器。因此,如果要在视图1中添加view2并删除view1,则会自动删除view2,因为它已经在view1中。所以你不能写[self.view removeFromSuperview];

答案 1 :(得分:1)

您可以在.h文件中声明视图变量。并在viewDidLoad中分配它,不要在那里释放它。每当您想添加视图使用时,[self.view addSubview:red];以及何时删除,都可以使用[red removeFromSuperview];

答案 2 :(得分:1)

[self.view removeFromSuperview]删除您显示的uiview。 因此,您需要为先前加载的视图调用removefromsuperview,并为新的视图调用addsubview。