IPHONE:测试以查看超级视图中是否有视图

Spa*_*Dog 3 iphone iphone-sdk-3.0

我即将做一个

[vistaX removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)

在删除之前,如何测试超级视图中是否存在vistaX?删除不存在的视图会导致应用程序崩溃...

谢谢你的帮助.

Chr*_*her 14

你可以用:

if(vistaX.superview)
     [vistaX removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)

虽然,我不知道如果没有superview,removeFromSuperview会失败.你确定这是问题吗?它可能与removeFromSuperview发布视图的事实有关吗?

编辑:根据你在下面的评论,听起来vistaX的保留计数第一次到0并且它被释放.如果您不希望发生这种情况,请在您的类中添加一个保留vistaX的属性(即"@property(retain)"),这样您就可以确保它始终存在.

编辑编辑:你有superView或其祖先的处理?如果是这样,我建议在vistaX视图上设置唯一标记.这可以通过编程方式或通过IB完成.然后,使用其中一个祖先上的viewWithTag选择器按其唯一标记搜索vistaX视图.