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