1

如果有人问过这个问题,请原谅我,而且我没有对 SO 进行足够好的搜索。

我正在执行以下操作来枚举子视图数组,同时从其父视图中删除每个子视图:

for( NSView *subview in [[self subviews] copy])
{
    [subview removeFromSuperview];
}

它工作正常,但是有没有更合适的方法来实现这个循环,而不是简单地复制数组?

4

2 回答 2

2

NSViewsubviewsgetter 直接返回它的可变数组而不复制它。所以如果你想删除特定的子视图,方法就是复制它。否则,在您的特定情况下,由于您要删除所有子视图,您可以将其子视图设置为空数组:

[self setSubviews: @[] ];
于 2013-07-04T23:56:04.393 回答
0

这是一个选项

for (int i = self.subviews.count - 1; i >= 0; --i) {
    UIView* v = self.subviews[i];
    [v removeFromSuperview];
}
于 2013-07-05T00:25:40.950 回答