Вопрос о селекторах Objective-C;Могу ли я использовать параметры и как? - PullRequest
1 голос
/ 13 февраля 2011

Я пытаюсь использовать селектор с аргументами и не могу при этом сделать.Я пришел из C / ++, и селекторы немного сбивают с толку.У меня есть этот код:

playItem = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(goToScene:)argumentHere];

Как мне передать аргумент методу таким образом?

Заранее спасибо: D

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Вы не можете.Селекторы указывают только метод, который нужно вызвать, а не параметры, которые нужно передать.

Что вы можете сделать, это проверить параметр sender в вашем методе goToScene:.Это будет элемент, над которым выполняется действие (наиболее вероятно CCMenuItemLabel в вашем случае).
Таким образом, вы можете увидеть, какой элемент был вызван (если вы используете goToScene: для нескольких элементов пользовательского интерфейса), и решить, какой параметр' использовать.

Чтобы различать различные элементы пользовательского интерфейса, часто используется атрибут tag.Таким образом, код может выглядеть следующим образом:

if ([sender tag] == 1) {
    ...
} else if ...

Если вам не нравится слишком много ifs, справочная таблица будет работать.

0 голосов
/ 13 февраля 2011

Возможно, вы ищете performSelector:withObject?Боюсь, я не совсем понимаю ваши вопросы, может быть.

Никита прав, когда вы настраиваете селектор, вы просто передаете имя дескриптора.Позже в вашем коде при вызове метода вы передадите любые аргументы.

...