Obj C методы делегата не назначены на UIButton (iOS)? - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь назначить метод делегата для UIButton, используя addTarget:action:forControlEvents:. Все компилируется без предупреждений, IBOutlet подключен к кнопке в Interface Bulder (XCode 4). Если я перемещаю метод делегата в контроллер, он работает нормально. (Весь код работал нормально, но я реорганизовал использование делегата, это моя первая попытка использования делегатов и протоколов.)

(добавлено) Объявление протокола, помещаемое перед @interface в .h:

@protocol MMGLVDelegate<NSObject>
  -(void)receiveQuitRequest:(id)sender;
@end

В интерфейсе контроллера эти свойства:

@property (nonatomic, assign) id<TheDelegateProtocol> delegate;
@property (nonatomic, retain) IBOutlet UIButton *quitBtn;

В реализации контроллера:

-(void)setDelegate:(id<MMGLVDelegate>)delegate {
  DLog(@"MMGLVSegmented setDelegate: Entered");
  _delegate = delegate;

  [self.quitBtn addTarget:self.delegate action:@selector(receiveQuitRequest:) 
                                   forControlEvents:UIControlEventTouchUpInside];
}

Любая помощь приветствуется. Изменение цели на любое из self.delegate, _delegate или делегата не меняет поведение приложения.

То, что я надеюсь сделать, это не обязательно объявлять класс receiveQuitRequest: он затем передается делегату, я бы лучше пошел прямо к делегату из элемента управления.

Ответы [ 3 ]

2 голосов
/ 15 июля 2011

Я думаю, вы должны написать

[self.quitBtn addTarget:delegate action:@selector(receiveQuitRequest:) 
                                   forControlEvents:UIControlEventTouchUpInside];

Я не уверен, но это может работать в вашем случае

0 голосов
/ 15 июля 2011

Если я все правильно понял, UIButton не включает селектор receiveQuitRequest:, поэтому ничего не нужно выполнять, когда пользователь касается кнопки.

0 голосов
/ 15 июля 2011

У меня есть пара небольших предложений:

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

  2. Очистить и восстановить.Опять же, это помогает сбросить то, что не было правильно установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...