2010-06-27 1 views
1

У меня есть UIView с кучей кнопок в нем (что-то вроде 200 из них) ...установка цель для UIButton, который был сделан в IB

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

Я пытаюсь пройти по подземельям вида, ища кнопки, а затем программно программировать цель кнопки ..., что приводит к сбою (я получаю компиляцию предупреждение «UIButton может не отвечать на addTarget ...»).

это петля:

for(UIButton *aButton in self.view.subviews){ 

     if([aButton isKindOfClass:[UIButton class]]){ 

      [aButton addTarget:self selector:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; 
     } 
    } 

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

Любая помощь очень ценится ...!

ответ

0

Вы можете использовать respondsTo или какой-либо другой вариант, чтобы избежать ошибки. Это гарантирует, что вы можете установить действие для aButton.

Однако, если вы все равно перебираете все эти кнопки, почему бы не просто создать их программно? Являются ли они конструктивными?

+0

Да - они ОЧЕНЬ очень тяжелые. Они являются наложенными кнопками для карты и обозначают места на этой карте (без геокода для этого места). Поэтому размещение их в IB очень удобно - их создание программно было бы больно. Можете ли вы дать мне подсказку, как это будет реализовано? «Отвечает на»? все, что я нашел до сих пор, было 'responsesToSelector: @selector (' ... Спасибо за вашу помощь! – Urs

+0

Я думаю, вы хотели бы проверить что-то вроде '[aButton отвечаетToSelector: @selector (addTarget) ...] ' –

+0

Ну, спасибо за подсказку для этого. Хотя это не решает мою проблему. Ошибка уходит, но targetAction не применяется к кнопке ... Похоже, я должен сделать это в IB: ( – Urs

5

вау - это было на самом деле довольно просто - Парни в devforums.apple.com дал мне намек ...

for(UIButton *aButton in self.view.subviews){ 

     if([aButton isKindOfClass:[UIButton class]]){ 

      [aButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; 
     } 
    } 

Можете ли вы разницу? ;)

+0

Я потратил на это пятнадцать минут, но нашел это! AddTarget: действие: forControlEvents вместо addTarget: selector: forControlEvents. – Tim

0

Вы должны отметить свой ответ как правильный.

Но только в случае, если кто-либо другой приходит:

Оно должно быть:

addTarget: само действие : @selector (ButtonClick :)

вместо:

addTarget: self селектор: @selector (кнопкаClick :)

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

  • Нет связанных вопросов^_^