如何在UIView中仅对某个子类的NSObject执行操作?

时间:2012-10-19 20:07:41

标签: objective-c uiview subview

我有一个UIView,其中包含UILabel,UISliders,UITextbox等。我想只对滑块执行操作。这是怎么做到的?目前,我有

int count = 0;
for (UIView *subview in [myView subviews])
{
  if ([subview isKindOfClass:[UISlider class]]);
  {
    [subview removeFromSuperview];
    NSLog(@"Class for object removed is %@",[subview class]);
    count ++;
  }
  //else{do nothing - subview isn't a slider, so I don't care about it}
}
NSLog(@"count = %d",count);

当我运行此代码时,一切都会受到影响(滑块,以及标签,文本框和其他所有内容)。从我从阅读其他帖子中收集的内容来看,使用带有数组的isKindOfClass有点不好意思,但我认为这只是在尝试isKindOfClass:[NSArray class]时。或者我错了吗?如果不允许在isKindOfClass循环内嵌套for,我该如何对我视图中的某些项执行操作?

编辑:为此实现添加了整个代码。计数已关闭,NSLog告诉我正在删除大量UILabel。在这次运行之后,我的观点完全被清空了。

编辑2:在if语句的末尾添加;,就像我在实际代码中一样。我在我的代码中删除了它,现在我得到了我期望的行为。

2 个答案:

答案 0 :(得分:0)

也许您应该尝试使用 isMemberOfClass 而不是isKindOfClass。

答案 1 :(得分:0)

原来我输错了。我的if语句末尾的;基本上就像我在那里没有if一样,这就是为什么所有内容都从我的视图中删除了。删除;使我的问题中的代码按预期工作。