Удаление кнопок из вида - PullRequest
       21

Удаление кнопок из вида

1 голос
/ 04 января 2011

Есть ли способ очистить вид всех кнопок?Мой код генерирует кнопки каждую секунду, и я сделал кнопку, чтобы убрать их все с экрана.Когда я попробовал [brick.removeFromSuperview] (кирпич - название кнопки), он удалил только последнюю произведенную кнопку.

Ответы [ 3 ]

3 голосов
/ 04 января 2011

Вы можете отслеживать ссылки на все ваши кнопки в 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

Преимущество этого метода (в отличие от простого перечисления подпредставлений представления и поиска кнопок) заключается в том, что вам не нужно беспокоиться об удалении кнопок UIB с вашего представления, чего не должно быть. Например, если вы не хотите, чтобы кнопка «удалить все кнопки» была удалена, просто не добавляйте ее в массив.

3 голосов
/ 04 января 2011
for (UIView *view in [self subviews]) {
    if ([view isKindOfClass:[UIButton class]]) {
        [view removeFromSuperview];
    }
}

Осторожно, это буквально удалит все кнопки из указанного представления. Таким образом, вы, вероятно, хотите, чтобы какое-то условие только удаляло сгенерированные кнопки. Вы можете отличить сгенерированные кнопки, установив tag на других ваших кнопках, если у кнопки нет тега, удалите ее.

1 голос
/ 04 января 2011
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];

Временный массив необходим, так как удаление кнопки делает недействительным счетчик, приводящий к непредсказуемым результатам.

...