я программно добавляю пару UIButtons к моему представлению. После нажатия на одну из кнопок они все должны быть 'removeFromSuperView' или выпущенный, не всего один.
for (int p=0; p<[array count]; p++) {
button = [[UIButton alloc] initWithFrame:CGRectMake(100,100,44,44)];
button.tag = p;
[button setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[self.view addSubview:button];
[button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
}
Теперь это - часть, куда все кнопки должны быть удалены. Не всего один.
-(void) action:(id)sender{
UIButton *button = (UIButton *)sender;
int pressed = button.tag;
[button removeFromSuperview];
}
Я надеюсь, что кто-то может помочь мне с этим!
Более эффективный способ, чтобы добавить каждую кнопку в массив, когда вы его создаете, а затем, когда кнопка нажата, у всех кнопок в массиве вызовите -ReMoveFromsuperview
Метод такой:
[arrayOfButtons makeObjectsPerformSelector:@selector(removeFromSuperView)];
Затем после этого вы можете держать кнопки в массиве и повторно использовать их, либо вызов RemovealLObjects
, чтобы их выпустить. Тогда вы можете начать заполнять его снова позже.
Это экономит вас от необходимости прогуляться по всей иерархии просмотра ищет кнопок.
NSMutableArray *buttonsToRemove = [NSMutableArray array];
for (UIView *subview in self.view.subviews) {
if ([subview isKindOfClass:[UIButton class]]) {
[buttonsToRemove addObject:subview];
}
}
[buttonsToRemove makeObjectsPerformSelector:@selector(removeFromSuperview)];
ИЗМЕНИТЬ :
Я отредактировал свой ответ, выбрав лучшее решение.
Теперь объекты не удаляются из массива при его перечислении ...