如何从ViewController调用按钮方法?

时间:2012-02-01 21:16:31

标签: iphone objective-c ios

我有一个方法addClicked,当单击导航栏上的按钮时会调用该方法。我想稍后在代码中调用它,而不必单击按钮。调用此方法的语法是什么?

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
                                             initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                                             target:self action:@selector(add_Clicked:)];

该函数的调用如下所示:

- (void) add_Clicked:(id)sender {

我试过了:

[self add_Clicked:];

[add_Clicked:];

[self add_Clicked: self];

最后的作品,但我不知道为什么。有人可以提供指向文档的链接,可以解释这是如何工作的吗?

3 个答案:

答案 0 :(得分:1)

你必须为发件人传递一些东西。这就是最后一个有效的原因。

尝试[self add_Clicked:nil]

答案 1 :(得分:1)

最后一个有效,因为您将当前类添加为目标“target:self”,但目标是(id),因此发送者可以是理论上的任何对象。

答案 2 :(得分:1)

建议的另一个替代方案,取决于你在做什么,是为类添加另一个方法,并让调用的方法形成回调来调用它。

- (void) add_Clicked:(id)sender {
  [self goAddSomething];
}


- (void) goAddSomething {
  /* add the code here to handle add. */
}

然后在你的代码的另一部分,你可以调用[self goAddSomething];而不必使用nil。