достижение свойства 'tag' объекта-отправителя - PullRequest
1 голос
/ 08 января 2012

Я создал IBAction следующим образом: -(IBAction) buttonTapped:(id)sender; и подключил его к UIButton с помощью построителя интерфейса, проблема в том, что я не могу сделать что-то вроде NSLog(@"%d",sender.tag);, компилятор выдает мне синтаксическую ошибку, что свойство тега не существует в объекте типа id ... но, однако, когда я делаю что-то вроде NSLog(@"%@", sender);, консоль отображает информацию о кнопке и ее теге ... поэтому возникает вопрос: как можно получить свойство тега UIButton через объект отправителя?

Ответы [ 3 ]

5 голосов
/ 08 января 2012

Вы пробовали кастовать sender?Например:

NSLog(@"%d", ((UIButton *)sender).tag);
3 голосов
/ 08 января 2012

Вместо того, чтобы приводить, это часто делает более чистый код более конкретным в объявлении вашего действия:

 -(IBAction) buttonTapped:(UIButton*)sender;

Вы можете использовать UIButton, UIControl, UIView или любой другой уровень специфичности, который вам требуется.

2 голосов
/ 08 января 2012

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

Итак, это похоже на:

NSLog(@"%d", [(UIButton*)sender tag]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...