Как получить имя Interface Builder из id - PullRequest
0 голосов
/ 01 ноября 2009

Если я назову виджет в Интерфейсном Разработчике, а затем напишу метод, который получает события нажатия на эту кнопку:

- (IBAction)btnTouchDown:(id)sender
{
  // how can you identify the button here,
  // if several different buttons map
  // their "Touch" event to this same function?
  // I know you can look at its text but that seems really clumsy
  // can I somehow get its INTERFACE BUILDER NAME?

  // I named each uniquely in interface builder,
  // under "Identity"/"Name"
  // Or is my only recourse to tie EACH BUTTON to its own handler function?
}

Ответы [ 2 ]

1 голос
/ 01 ноября 2009

Нажмите на кнопку в конструкторе интерфейсов, нажмите CMD + 2 (или в информационном диалоговом окне, вторая вкладка) и перетащите кружок из Подберите внутри в Владелец файла из yourView .xib, а затем он позволит вам выбрать один из методов, который имеет подпись - (IBAction) method:(id)sender. Выберите тот, который вы хотите связать с этой кнопкой:)

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

Если вы действительно хотите это сделать, вы также можете проверить номер тега .

1 голос
/ 01 ноября 2009

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

UIButton IBOutlet *mybutton;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...