1

有没有办法清除所有按钮的视图?我的代码每秒生成按钮,我制作了一个按钮,我想将它们全部从屏幕上清除。当我尝试[brick.removeFromSuperview](brick 是按钮的名称)时,它只删除了最后一个生成的按钮。

4

3 回答 3

3
for (UIView *view in [self subviews]) {
    if ([view isKindOfClass:[UIButton class]]) {
        [view removeFromSuperview];
    }
}

不过要小心,这将删除指定视图中的所有按钮。所以你可能想要某种条件来只删除生成的按钮。您可以通过在其他按钮上设置 a 来区分生成的tag按钮,如果该按钮没有标签,则将其删除。

于 2011-01-04T00:56:56.273 回答
3

您可以跟踪对NSMutableArray.

前任

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

此方法的一个优点(与仅枚举视图的子视图和查找按钮相反)是您不必担心从视图中删除不应该删除的 UIButton。例如,如果您不想删除“删除所有按钮”按钮,请不要将其添加到数组中。

于 2011-01-04T01:07:41.923 回答
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];

临时数组是必需的,因为删除按钮会使枚举器无效,从而产生不可预测的结果。

于 2011-01-04T01:00:12.710 回答