我正在练习多视图,但遇到一个小问题。
当我的新视图加载后,我仍然可以看到以前的视图。
如何使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];
}
这是一个截图: -
当我取消注释[self.view removeFromSuperview]
时,我的红色视图甚至没有被加载。
任何帮助都将不胜感激。
由于
答案 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。