удалите весь UIButton's из подпредставления

я программно добавляю пару 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];  
}

Я надеюсь, что кто-то может помочь мне с этим!

5
задан Felix Lamouroux 3 February 2010 в 10:45
поделиться

2 ответа

Более эффективный способ, чтобы добавить каждую кнопку в массив, когда вы его создаете, а затем, когда кнопка нажата, у всех кнопок в массиве вызовите -ReMoveFromsuperview Метод такой:

[arrayOfButtons makeObjectsPerformSelector:@selector(removeFromSuperView)];

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

Это экономит вас от необходимости прогуляться по всей иерархии просмотра ищет кнопок.

8
ответ дан 18 December 2019 в 07:54
поделиться
NSMutableArray *buttonsToRemove = [NSMutableArray array];
for (UIView *subview in self.view.subviews) {
    if ([subview isKindOfClass:[UIButton class]]) {
        [buttonsToRemove addObject:subview];
    }
}
[buttonsToRemove makeObjectsPerformSelector:@selector(removeFromSuperview)];

ИЗМЕНИТЬ :
Я отредактировал свой ответ, выбрав лучшее решение.
Теперь объекты не удаляются из массива при его перечислении ...

2
ответ дан 18 December 2019 в 07:54
поделиться