有没有办法清除所有按钮的视图?我的代码每秒生成一次按钮,然后我创建了一个按钮,我希望将它们全部清除掉。当我尝试[brick.removeFromSuperview]
(砖是按钮的名称)时,它只删除了生成的最后一个按钮。
答案 0 :(得分:3)
for (UIView *view in [self subviews]) {
if ([view isKindOfClass:[UIButton class]]) {
[view removeFromSuperview];
}
}
小心,这将从字面上删除指定视图中的所有按钮。所以你可能想要某种条件只删除生成的按钮。您可以通过在其他按钮上设置tag
来区分生成的按钮,如果该按钮没有标记,则将其删除。
答案 1 :(得分:3)
您可以跟踪NSMutableArray
中所有按钮的引用。
e.x。
NSMutableArray *buttons = [[NSMutableArray alloc] init];
// Button creation
UIButton *button = [[UIButton alloc] init...];
[yourView addSubview:button];
[buttons addObject:button];
[button release];
// Button removal
[buttons makeObjectsPerformSelector:@selector(removeFromSuperview)];
[buttons removeAllObjects]; // Alternatively, you could omit this line
// and recycle the buttons at a later time
此方法的一个优点(与仅枚举视图的子视图和查找按钮相反)是您不必担心从视图中删除不应该的UIButtons。例如,如果您不想删除“删除所有按钮”按钮,则不要将其添加到数组中。
答案 2 :(得分:1)
NSMutableArray * buttons = [[NSMutableArray alloc] init];
for( NSObject * btn in btn.superview.subviews )
{
if( [btn isKindOfClass: [UIButton class]] )
[buttons addObject: btn];
}
for( UIView * btn in buttons )
[btn removeFromSuperview];
[buttons release];
临时数组是必需的,因为删除按钮会使枚举数无效,从而产生不可预测的结果。