2012-05-16 3 views
0

У меня есть 17 кнопок в моем xib. И я установил для них значения тегов от 1 до 17.Многие UIButton в .xib с разными тегами

Может ли кто-нибудь мне сказать, как соединить все 17 кнопок с одним именем переменной в .h и получить определенную кнопку в .m с ее значением тега.

Thanks

ответ

1

Я просто проверил это, и я знаю, что если вы выбираете все кнопки в раскадровки и управление перетащите их на соответствующий контроллер в качестве помощника редактора вы можете создать коллекцию выходов, представляющих все кнопки. Итоговый код:

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons; 
+0

отлично! спасибо, человек! .. он отлично работает .. это то, что я ищу. – turtle

1

Нет, это невозможно по моему опыту. IBOutlet, т. Е. Interface Builder Outlet всегда относится к одному соединению между компонентом интерфейса (например, кнопкой) и переменной в интерфейсе (например, IBOutlet UIButton * myButton). Это взаимно однозначное отношение.

+0

Возможно ли это в случае этикеток? Не в UiButton? – turtle

+0

Я думаю, вы не поняли. Пожалуйста, прочитайте его еще раз. Он охватывает каждый и обеспечивает интеграцию с построителем интерфейса. – harshitgupta

+0

хорошо ... я ищу другим способом .. спасибо – turtle

1

Для каждой кнопки должно быть IBOutlet, поэтому вам нужно будет создать все 17 из них. Подключите кнопки к розеткам отдельно, а затем вы сможете поместить их в массив внутри вашего инициализатора, если вам понадобятся в массиве.

Вы можете сэкономить на IBAction методы, хотя: сделать один метод, как этот

-(IBAction)buttonClicked:(id)sender { 
} 

Вы можете подключить этот метод ко всем кнопкам, и посмотреть на теге (id)sender решить, какая кнопка называется ваше действие ,

+0

мой плохой .. это значит, что мне нужно создать 17 переменных IBOutlet в xib !! – turtle

+0

@turtle Да, вам нужно будет создать 17 переменных IBOutlet, но вам не нужно использовать их за пределами вашего назначенного метода 'init', где вы можете сгруппировать их в массив или' NSArray'. – dasblinkenlight

+0

да, это сделано .. спасибо .. :) .. но код стал излишним. – turtle

0

Вы не можете дать одну ссылку на 17 кнопки, но вы можете назначить один метод на 17 кнопок, как @dasblinkenlight сказал

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

-(IBAction)buttonClicked:(id)sender { 

    int j = [sender tag]; 
    NSLog(@"Clicked Button %i", j); 

} 
+0

, но я не хочу прикасаться к кнопке, просто хочу, чтобы ее выбранное свойство было равно YES или NO. Спасибо anyways .. – turtle

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