/ / Багато UIButton в .xib з різними тегами - ios, uibutton

Багато UIButton в .xib з різними тегами - ios, uibutton

У мене в XIB кнопка 17. І я встановив їм значення тегів від 1 до 17.

Хтось може мені сказати, як з’єднати всі 17 кнопок з одним ім'ям змінної в .h і отримати певну кнопку в .m з її значенням тега.

Дякую

Відповіді:

1 для відповіді № 1

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

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

1 для відповіді № 2

ні, на мій досвід, це неможливо. IBOutlet, тобто Interlet Builder Outlet, завжди посилається на одне з'єднання між компонентом інтерфейсу (як кнопка) та змінною в інтерфейсі (наприклад, IBOutlet UIButton * myButton). Це відношення один до одного.


1 для відповіді № 3

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

Ви можете заощадити на IBAction Однак методи: зробіть такий метод, як цей

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

Ви можете підключити цей метод до всіх кнопок і подивитися на тег (id)sender щоб вирішити, яка кнопка називається вашою дією.


0 для відповіді № 4

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

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

-(IBAction)buttonClicked:(id)sender {

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

}