2013-05-23 3 views
0

У меня есть 15 UIButtons с тем же тегомвыбрать все элементы с определенным тегом в Xcode

Как бы я идти о выборе/доступа ко всем из них?

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

Edit: Я знаю Я могу получить доступ к одному элементу с

UIButton *btn= (UIButton *)[self.view viewWithTag:12]; 

Но как бы я идти путем доступа к более, которые имеют тот же тег или другое свойство опция

+0

Смотрите мой ответ ниже – Undo

+0

Я не знаю ни о чем в стандартном API для этого, но в родительский взгляд, вы можете просто перебирать подзоны и проверять свойство тега. – HexAndBugs

ответ

1

Правильный способ написать, если заявление и цикл через ваши подвидов, как это:

for (id aSubview in self.view.subviews){ 
    if ([aSubview isKindOfClass:[UIButton class]] && ([(UIButton *)aSubview tag] == 42)) { 
     NSLog(@"found button with tag 42"); 
     // do whatever here 
    } 
} 
+0

Это похоже на правильную причину. «Id» может принимать любой объект, но он все равно не печатает. Если я действительно перебирать точки зрения, что он находит первый, кажется, работает Тхо: для (UIButton * БТН в self.view.subviews) для (UIButton * аЬс в btn.subviews) если ([abc isKindOfClass: [UIButton class]]) .. nslog titleLabel text, он печатает текст всех кнопок. я был убежден, что ваш будет работать, я не уверен, почему это не так? – PenguinSource

+0

@rdelmar, я думаю, проблема в том, что кнопки находятся на разных уровнях гнезда в других представлениях - я предложил тот же самый код. – Undo

+0

все кнопки находятся в пределах 1 вида; нет гнезд. они буквально помещаются в uiviewcontroller, нет добавленных просмотров – PenguinSource

3

NSArray легче. Вы можете настроить один выход, как это:

@property (weak, nonatomic) IBOutletCollection (UIButton) NSArray *buttons; 

Чтобы использовать тег, который должен были бы написать рекурсивный алгоритм поиска (предполагается, что кнопки может быть в произвольном виде контейнера).

+0

Я не знал об объектах iboutletCollection; Я пытаюсь заставить Soln Undo работать, поскольку это кажется простым, но это так же хорошо. – PenguinSource

+1

@PenguinSource Вы можете повысить каждый ответ, который, по вашему мнению, будет полезен для вашей проблемы. – Undo

Смежные вопросы