Objective-C: вызов метода из другого класса в addTarget: action: forControlEvents - PullRequest
2 голосов
/ 15 октября 2010

Вот моя проблема:

Я хочу назначить событие на кнопке UIB. Я использую этот метод:

<code>
- (void)addTarget:(id)target
action:(SEL)action
forControlEvents:(UIControlEvents)controlEvents

вот так:

<code>
[newsButton addTarget:self
action:@selector(myEvent2)
forControlEvents:UIControlEventTouchUpInside];

newsButton - это моя кнопка UIB.

Если myEvent2 принадлежит классу, в котором я нахожусь, код компилируется и выполняется нормально, все счастливы.

Но если myEvent2 принадлежит другому классу, мне не удается его выполнить (проект компилируется нормально).

Я попытался изменить свой код таким образом:

<code>
MyViewController* test = [[MyViewController alloc] init];
[newsButton addTarget:self
action:@selector([test myEvent2])
forControlEvents:UIControlEventTouchUpInside];

но я получаю следующие ошибки:

Ожидается ':' before '[' token

Имя метода отсутствует в @ selector

Есть ли у кого-нибудь решение моей проблемы?

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

Ответы [ 3 ]

8 голосов
/ 15 октября 2010

Вам нужно изменить addTarget:self на addTarget:test

4 голосов
/ 15 октября 2010
MyViewController* test = [[MyViewController alloc] init];
[newsButton addTarget:test
    action:@selector(myEvent2)
    forControlEvents:UIControlEventTouchUpInside];
0 голосов
/ 15 октября 2010

Другой вариант - использовать метод перенаправления:

- (void)myRedirectHandler {
    [ test myEvent2 ];
}

...

[newsButton addTarget:self
    action:@selector(myRedirectHandler)
    forControlEvents:UIControlEventTouchUpInside];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...