我有一个UIView元素,我将其添加到主视图控制器中。
由于我的代码设计,所以在我的代码的不同位置调用removeFromSuperview两次。
[myview removeFromSuperview];
这就是我的代码,所以我想知道调用'removeFromSuperview'是否会导致任何问题。
或者我如何检查视图是否在superview中,只删除它。
e.g
if (myview in superview)
[myview removeFromSuperview];
else
do nothing
答案 0 :(得分:8)
removeFromSuperview
的文档告诉以下内容:
如果接收者的超级视图不是nil,则superview发布 接收器。如果您打算重用视图,请务必先保留它 调用此方法并在适当的时候再次释放它。
这意味着不会发生崩溃或副作用,并且已经通过此方法的实施执行了您正在询问的检查。
但是,如果您需要检查您的视图是否作为子视图添加到其他视图中,您可以使用以下代码:
if( theView.superview != nil )
{
// theView is a subview for some view
}
答案 1 :(得分:-1)
试试这个:
if (myView.view.superview != nil) {
[myView removeFromSuperview];
}
else {
//do something
}