从代码中调用IBAction的最佳方式是什么?

说例如我有一个IBAction是连接到一个UIButton在界面生成器。

- (IBAction)functionToBeCalled:(id)sender { // do something here } 

在我的代码中,例如用另一种方法说,调用这个IBAction的最好方法是什么?

如果我尝试像这样调用它,我收到一个错误:

 [self functionToBeCalled:]; 

但是,如果我尝试像这样调用它(我认为有一点欺骗),它可以正常工作:

 [self functionToBeCalled:0]; 

什么是适当的方式来正确调用它?

正确的方法是:

 - [self functionToBeCalled:nil] 

传递一个零发送者,表明它没有通过通常的框架调用。

要么

 - [self functionToBeCalled:self] 

作为发送者传递自己,这也是正确的。

select哪一个取决于函数到底是什么,以及它期望的发送者是什么。

国际海事组织调用IBAction应仅由UI操作触发(例如button点击)。 如果你需要从多个地方运行一些代码,那么你可以从IBAction中提取这个代码到一个新的方法中,然后从这两个地方调用这个方法

 - (IBAction)onButtonTap:(id)sender { [self doSomething]; } 

这允许您根据发件人执行额外的逻辑(也许您可能会将相同的操作分配给多个button,并根据sender参数决定要执行的操作)。 而且还减less了在IBAction编写的代码量(这可以使您的控制器实现干净)。