我有两个UIViews,UIView1和UIView2。被添加UIView2作为一个子视图到UIView1,我想知道的是,如果我叫从superview中删除UIView
[UIView1 removeFromSuperview];
剂量也适用于UIView2的removeFromSuperView?或者我特别要调用的UIView2以及...
任何帮助,将不胜感激
我有两个UIViews,UIView1和UIView2。被添加UIView2作为一个子视图到UIView1,我想知道的是,如果我叫从superview中删除UIView
[UIView1 removeFromSuperview];
剂量也适用于UIView2的removeFromSuperView?或者我特别要调用的UIView2以及...
任何帮助,将不胜感激
UIView---->UIView1------>UIView2
假设你要删除的UIView1 UIView2,只是你可以编写
[UIView2 removeFromSuperView].
假设你想去除的UIView UIView1,就可以像
写[UIView1 removeFromSuperView].
在这种情况下,UIView2也被删除。因为当你删除任何视图时,视图的所有子视图都将被删除。
无需调用[UIView2 removeFromSuperView]
,因为当你删除UIView1它也将删除所有子视图。
希望这会有所帮助。
如果您认为所有的UIButtons,UILabels和其他控件都是从UIView继承而来的,并且您没有明确地将它们从视图中移除,则很明显从superview移除父视图也会导致删除所有子视图。
因此,你不需要调用[UIView2 removeFromSuperview]
你做UIView2添加为UIView1的子视图。所以,如果你打电话[UIView1 removeFromSuperview];
意味着什么你添加它,并且UIView1从超级视图中删除。所以不需要调用[UIView2 removeFromSuperView];
removeFromSuperView:将接收者从其超级视图及其窗口中取消链接,并将其从响应者链中删除。
如果接收者的超级视图不为零,超级视图释放接收者。如果您打算重新使用视图,请确保在调用此方法之前保留该视图,并在适当时候再次释放它。
这里[UIView2 removeFromSuperView]
将从UIView1
而且[UIView1 removeFromSuperView]
会从它的父删除其所有子视图(可能是窗口或另一个视图)
更好,你必须像
UIView * main=[[[UIView alloc] initWithFrame:CGRectMake(20, 20, 20, 20)]autorelease];
[self.view addsubview main];
[main addsubview UIView1];
[main addsubview UIView2];
创建MAINVIEW
那么你打电话
[UIView1 removeFromSuperview];
什么应该我做如果我想删除UIView1,并不想删除UIView2? – 2012-07-06 05:17:41
不保留UIView1不能保留UIView2。但我们可以通过另一种方式解决在移除UIView1之前,您必须保存UIView2并将此视图发送到UIView。 – 2012-07-06 05:24:31
当您删除View1时,View2也会被删除,因为:(A)我们假设View1未被保留在其他任何地方,被释放,因此释放其所有子项;或者:(B)当父视图设置为零时,UIView会自动删除所有子项?哪一个? (我一直认为A,但现在我不太确定...) – 2012-07-06 05:48:59