0

我正在练习多视图但有一个小问题。

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

如何使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]我的红色视图甚至都没有加载。

任何帮助,将不胜感激。

谢谢

4

3 回答 3

2

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

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

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

于 2011-08-30T06:13:48.563 回答
1

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

于 2011-08-30T05:58:42.400 回答
1

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

于 2011-08-30T05:59:45.840 回答