2012-02-01 69 views
1

我有一个方法addClicked,当点击导航栏上的按钮时被调用。我想稍后在代码中调用它,而不必单击按钮。调用这个方法的语法是什么?如何从ViewController调用按钮方法?

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]; 

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

回答

1

您必须为发件人传递一些信息。这就是上一个作品的原因。

尝试[自add_Clicked:无]

+0

谢谢你解释。我现在有另一个问题,因为我试图从后面的AddQuoteViewController类访问第一个RootViewController类中的变量集,并且似乎无法访问该变量。我在这里发布的问题[链接](http://stackoverflow.com/questions/9104327/how-do-i-pass-object-from-one-viewcontroller-to-another-viewcontroller),如果你可以看看在我做错了什么。 – jroyce 2012-02-01 22:28:55

1

的最后一部作品,因为你加入当前类为目标“的目标:自我”,但目标是(ID),所以发送者可以在理论上,任何对象。

+0

您在add_Clicked:方法中不使用发件人的事实是使解决方案成功的原因。如果您在呼叫中使用发件人,那么传递null或self可能会崩溃。 – nycynik 2012-02-01 21:29:04

1

建议的另一种替代方法取决于你的做法是向类中添加另一种方法,并使用称为形式回调的方法来调用它。

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


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

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

相关问题