Как вызвать метод на основе протокола? - PullRequest
0 голосов
/ 25 сентября 2010

новичок здесь. Это служебный проект для iPhone.

Перво-наперво. У меня есть протокол, который это:

@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
- (void)updateLabels:(NSString *)text :(BOOL)isOn;
@end

Я реализую этот протокол в моем MainViewController следующим образом:

- (void)updateLabels:(NSString *)text :(BOOL)isOn {
    [nameLabel setText:text]; 
     if (isOn)
      [onLabel setText:(@"ON")];
     else
      [onLabel setText:(@"OFF")];
     }

Теперь я хочу использовать метод updateLabels в моем FlipsideViewController в методе с именем buttonClick. Как бы я сослался на метод updateLabels, расположенный в MainViewController?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2010

[self updateLabels:@"foo" :YES];

Кстати, хотя в методе можно использовать неназванный параметр (как у вас), обычно это считается плохой практикой без веской причины, иначе. :)

0 голосов
/ 25 сентября 2010

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

Делегирование - это когда у вас есть второй объект, делегат, который принимает протокол делегирования. Затем объект FlipsideViewController вызывает методы (которые являются частью этого протокола) для объекта делегата. Это означает, что FlipsideViewController не должен реализовывать протокол FlipsideViewControllerDelegate, и поэтому вам не следует вызывать методы из этого протокола.

Вот еще немного информации о делегировании: http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html%23//apple_ref/doc/uid/TP40008195-CH14-SW1

И еще немного о протоколах: http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Protocol.html%23//apple_ref/doc/uid/TP40008195-CH45-SW1

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