Определите класс отправителя при установлении соединения IBAction в Xcode 4,2.1 - PullRequest
0 голосов
/ 31 декабря 2011

В Xcode 4 или выше, у него есть удобная функция, позволяющая нам CTRL + перетаскивать объект из интерфейса в файл .h, чтобы быстро соединить объект с методом события (предположим, что Ассистент Редактора включен).

Скажем, у нас есть UIButton в интерфейсе, и мы хотим добавить IBAction для его «подкраски внутри», мы включаем окно помощника и нажимаем / удерживаем CTRL + перетащите кнопку в файл .h, чтобы быстро сгенерировать необходимые коды.

Во всплывающем окне подсказки, скажем, мы установили «соединение» как «Действие».

В раскрывающемся списке «Тип» мы можем выбрать «id» или «UIButton». <--- вот где моя проблема. </p>

Странная вещь в Xcode 4.2.1: независимо от того, что я выбираю, он всегда генерирует код: «(id) sender» в качестве аргумента.

Я знаю, что легко вручную изменить его на «(UIButton *) sender», но какой смысл в этом раскрывающемся списке, когда он всегда генерирует «(id)»?

Это ошибка XCode или я что-то упустил, чтобы он генерировал код "(UIButton *) sender", когда я выбираю "UIButton" в этом раскрывающемся списке?

Отредактировано 27 февраля / 2012 : Это подтверждено, решено в Xcode 4.3

1 Ответ

0 голосов
/ 01 января 2012

- (void)action:(id)sender - это способ определения действий. теоретически вы можете соединить разные элементы интерфейса с одним и тем же действием. после того, как вы создали соединение, вы можете вручную изменить id на любой класс, который вам нужен, или просто выполнить приведение внутри метода.

...