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

时间:2009-10-14 18:20:07

标签: iphone iphone-sdk-3.0

我即将做一个

[vistaX removeFromSuperview];

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:14)

你可以用以下方式保护它:

if(vistaX.superview)
     [vistaX removeFromSuperview];

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

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

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

答案 1 :(得分:2)

您可以通过应用

之类的条件来检查它
if(vistaX.superview!=nil)
   [vistaX removeFromSuperview];

然后如果superview存在,它将从超级视图中删除,否则不会。