3

我有两个 UIView,UIView1 和 UIView2。UIView2 被添加为 UIView1 的子视图,我想知道的是,如果我打电话

[UIView1 removeFromSuperview];

在 UIView2 上也应用 removeFromSuperView 的剂量?还是我也必须特别在 UIView2 上调用它...

任何帮助,将不胜感激

4

6 回答 6

5
UIView---->UIView1------>UIView2

假设你想删除 UIView1 上的 UIView2,你可以这样写

[UIView2 removeFromSuperView].

假设你想删除 UIView 上的 UIView1,你可以这样写

[UIView1 removeFromSuperView].

在这种情况下,UIView2 也会被移除。因为当你移除任何视图时,视图的所有子视图都会被移除。

于 2012-07-06T04:39:01.143 回答
4

无需调用[UIView2 removeFromSuperView],因为当您删除 UIView1 时,它也会删除其所有子视图。

希望这可以帮助。

于 2012-07-06T04:29:18.190 回答
1

如果您认为所有 UIButtons、UILabels 和其他控件都继承自 UIView,并且您没有从视图中显式删除它们,那么很明显,从父视图中删除父视图也会导致所有子子视图的删除。

因此,您无需致电[UIView2 removeFromSuperview]

于 2012-07-06T04:36:55.743 回答
1

您将 UIView2 添加为 UIView1 的子视图。因此,如果您调用[UIView1 removeFromSuperview];意味着您在其中添加的内容以及 UIView1 从超级视图中删除的内容。所以不需要打电话[UIView2 removeFromSuperView];

于 2012-07-06T04:37:43.730 回答
1

更好的是你必须创建主视图

UIView * main=[[[UIView alloc] initWithFrame:CGRectMake(20, 20, 20, 20)]autorelease];
[self.view addsubview main];
[main addsubview UIView1];
[main addsubview UIView2];

然后你打电话

[UIView1 removeFromSuperview];
于 2012-07-06T05:16:33.697 回答
1

removeFromSuperView:将接收者与其父视图和窗口解除链接,并将其从响应者链中移除。

如果接收者的 superview 不为零,则 superview 释放接收者。如果您打算重用视图,请确保在调用此方法之前保留它,并在以后酌情再次释放它。

这里[UIView2 removeFromSuperView]将从 UIView1 中删除 UIView2

[UIView1 removeFromSuperView]还将从其 superView 中删除其所有子视图(可能是窗口或其他视图)

于 2012-07-06T04:39:31.593 回答