如何根据协议调用方法?

时间:2010-09-24 21:31:53

标签: objective-c ios4

新手在这里。这是一个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")];
     }

现在我想在我的FlipsideViewController中使用名为updateLabels的方法中的buttonClick方法。我如何引用MainViewController中的updateLabels方法?

2 个答案:

答案 0 :(得分:2)

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

顺便说一下,虽然可以为一个方法做一个未命名的参数(就像你有的一样),但是如果没有一个很好的理由,它通常被认为是不好的做法。 :)

答案 1 :(得分:0)

根据您的上述编辑,我认为您可能会对代理协议感到困惑。

委托是您拥有第二个对象,委托,采用委托协议。然后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