iwa*_*bed 29 iphone cocoa-touch interface-builder ibaction ios
比方说,我有一个IBAction,它连接到界面构建器中的UIButton.
- (IBAction)functionToBeCalled:(id)sender
{
   // do something here   
}
在我的代码中,例如在另一种方法中说,调用IBAction的最佳方法是什么?
如果我试着像这样调用它,我收到一个错误:
[self functionToBeCalled:];
但是,如果我试着像这样打电话(我觉得有点作弊),它运作正常:
[self functionToBeCalled:0];
正确调用它的正确方法是什么?
Jak*_*org 68
正确的方法是:
- [self functionToBeCalled:nil] 
传递一个nil发送者,表明它没有通过通常的框架调用.
要么
- [self functionToBeCalled:self]
传递给自己作为发件人,这也是正确的.
选择哪一个取决于函数的确切功能以及发件人的期望.
Cri*_*tik 11
从语义上讲,调用IBAction应该仅由UI事件触发(例如按钮点击).如果需要从多个位置运行相同的代码,则可以将该代码从IBAction专用方法中提取出来,并从两个位置调用该方法:
- (IBAction)onButtonTap:(id)sender {
    [self doSomething];
}
这允许您根据发送方执行额外的逻辑(可能您可能会将相同的操作分配给多个按钮,并根据sender参数决定要执行的操作).并且还减少了您需要编写的代码量IBAction(这使您的控制器实现保持干净).
| 归档时间: | 
 | 
| 查看次数: | 23101 次 | 
| 最近记录: |