for循环不删除视图?

时间:2013-02-06 01:33:26

标签: objective-c xcode cocoa

我有以下代码:

    for (NSImageView *image in self.view.subviews) {
        if (image.frame.size.height == 67 && image.frame.size.width == 46) {
            [image removeFromSuperview];
        }
    }

按下按钮时调用此方法。我希望删除具有这些维度的每个NSImageView。问题是,它只删除了一个。我必须一遍又一遍地点击按钮以清除图像。其中有4个。

但是,我注意到它生成的日志显示每次都删除最后一行。我猜是因为这些图像是最顶层的。

所以我的问题是,我怎么能这样做,以便每次从视图中删除高度为67和宽度为46的NSImageViews?

谢谢!

1 个答案:

答案 0 :(得分:4)

变异数组错误应该阻止您的代码执行。请改用:

NSArray *copy = [self.views.subviews copy];

for (NSImageView *image in copy) {
    if (image.frame.size.height == 67 && image.frame.size.width == 46) {
        [image removeFromSuperview];
    }
}