Когда вы используете и получаете доступ к объектам IB с помощью viewWithTag вместо свойства IBOutlet? - PullRequest
0 голосов
/ 12 августа 2011

Для каждого IBOutlet, которым вам нужно управлять, вам нужно иметь указатель, поэтому также необходимо иметь свойство. Большую часть времени свойство должно быть синтезировано, а затем выпущено как в deallloc, так и в viewDidUnload. Итак, на самом деле, есть небольшой набор кода, который вам нужно писать повторно. За это вы получаете простоту использования и ясность в коде. Теперь использование и доступ к объектам из IB с помощью [self.view viewWithTag:] экономит немного места в коде, но дает немного неясности, потому что вам нужно запомнить или проверить IB на предметные теги. Итак, почему кто-то будет беспокоиться об использовании viewWithTag?

Ответы [ 3 ]

1 голос
/ 12 августа 2011

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

Чтобы я мог сделать:

UIButton *desiredButton = [myView.viewWithTag:theTag]

Я использую, чтобы объявить тип кнопки (или любой тип представления) в enum, чтобы я мог безопасно назначить и вызвать позже:

typedef enum {
  ButtonTypeDelete = 1,
  ButtonTypeCancel = 2,
  ButtonTypeAccept = 3,
  ....
  ..
} ButtonType
1 голос
/ 12 августа 2011

Существует много вариантов использования тега, также нет необходимости иметь выход для каждого элемента представления.

  1. UITextfields для заполнения в длинной форме, здесь тег можно использовать дляавтоматическое перемещение курсора в следующее поле
  2. Одно и то же IBAction может быть подключено к нескольким кнопкам, и действие может быть выполнено на основе тега.

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

0 голосов
/ 12 августа 2011

Вы используете его везде, где вы не будете загружать интерфейс из NIBS.Лично я никогда не использую интерфейсный конструктор, и часто полезно не хранить указатели на все создаваемые вами подпредставления (которых может быть много), а помечать их и идентифицировать, используя их теги позже.Например, я использую эту технику в заголовке UITableView, который я должен изменить в соответствии с пользовательским вводом.

...