单个IBAction用于多个UIButton与单个IBAction用于单个UIButton

时间:2014-05-29 07:51:18

标签: cocoa-touch ios7 storyboard

在使用故事板时,我的团队成员有两种不同的方法:

方法1:使用每个按钮绑定唯一操作,即:

  • 完成按钮 - 绑定到 - doneButtonAction
  • 取消按钮 - 绑定到 - cancelButtonAction

OR

方法2:将单个操作绑定到多个按钮,即:

  • 完成按钮 - 绑定到 - commonButtonAction
  • 取消按钮 - 绑定到 - commonButtonAction

然后在commonButtonAction中,他们更喜欢使用这样的switch case:

- (IBAction)commonButtonAction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    switch (button.tag) {
        case 201: // done button
            [self doneButtonAction:sender];
            break;
        case 202: // cancel button
            [self cancelButtonAction:sender];
            break;
        default:
            break;
    }
}
- (void)cancelButtonAction:(id)sender
{
    // no interesting stuff, simple dismiss of view :-(
}
- (void)doneButtonAction:(id)sender
{
    // some interesting stuff ;-)
}

他们给出遵循方法2的推理是 - 在每个视图控制器中,在代码遍历过程中,任何人都可以轻松识别在何处查找与按钮操作相关的代码。

虽然其他人放弃了这个想法,因为他们说添加一个额外的开关盒是不必要的,这不是一种常见的做法。

您有什么看法?

1 个答案:

答案 0 :(得分:1)

嗯,方法2似乎浪费了我的代码。如果你使用单独的方法分别使用单独的按钮,你也可以直接连接它们,对吧?

如果你没有在每个按钮上使用单独的方法(如果按钮逻辑最多只有一行或两行),我可以想象在通用按钮方法中使用switch语句。 但出于可读性目的,我建议直接实施特定的IBAction,即方法1

- (IBAction) cancelButtonAction:(id)sender
- (IBAction) doneButtonAction:(id)sender
相关问题