2011-08-31 108 views
-1

讨论。这是更优选的:IBAction按钮按

与发送者A单一IBAction为和一堆if语句 例如:if (sender == self.whichbuttonpressed)

单个IBAction为与发送方和switch语句 例如:switch (send.tag) //短手以便于阅读

对每个按钮的IBAction。

讨论可以说我们在XIB文件中有6个或更少的按钮。

感谢

PS使我相信你的奶奶正在看你的反应所以没有嘲讽请,是真实的。

+2

作为一个诙谐自负的智能屁股,我特此告诉你:“堆栈溢出是专业和爱好者程序员”。你的祖母是专业的程序员吗? – Kheldar

+0

谁首选?不同的结构在不同的情况下是有意义的,使用与你的用例最匹配的结构。 – codelark

+0

我很高兴你认出你自己。谢谢。 – axe

回答

1

我更喜欢使用标签,所以

单IBAction为与发件人和switch语句前:开关(send.tag)//人手不够,为便于阅读

最后的办法如果针对不同按钮的动作显着不同,则是合理的

1

绝对是每个按钮的IBAction。清洁。简单。使您能够添加或删除操作或按钮,而无需编辑,并且可能会将错误引入代码中以执行其他操作。

+0

我其次。它更加模块化。 – TommyG

+0

我倾向于同意你的看法,但这是一个非常广泛的问题,很大程度上取决于精确的用户界面和应用程序。我认为这是目前的形式不能回答的问题,并没有带来太多...... – Kheldar

+0

@Kheldar - 是的。这对StackOverflow来说并不是很好,因为他说他正在寻找讨论,但是...... –

2

你的实现依赖于你的应用程序,但考虑到这个..

说你是实施数字键盘,10个键(0-9)。按下每个按钮时唯一的区别是数字代表。所以,如果你每个按钮的标签设置为数字值的按钮应该代表,处理10个按钮与一个IBAction为方法变得微不足道:

 
    -(IBAction)buttonPress:(id)sender 
    { 
     UIButton *b = (UIButton *)sender; 
     int value = b.tag; 

     // Do something with value... 
    } 

我已经用这种方法适用于各种情况下单视图包含许多按钮,这些按钮基本上都是做同样的事情,但可以通过为每个按钮分配一个唯一的标记而在幕后进行区分。

如果您有许多按钮的视图,但它们彼此不相关,那么每个按钮都应该有它自己的IBAction方法。在这种情况下这样做可以让每个按钮的操作的独特实现更具可读性和可维护性。

1

我其实是你列出的第二和第三个。标签肯定比一堆if语句更容易使用。如果我在一个视图上有一堆完全不相关的按钮,我通常使用单独的IBActions。如果它们彼此相关,那么我使用1 IBAction,所以我不必重复自己。

实施例:

  1. 登录并注册按钮:不同IBActions。一个需要推送一个VC,另一个需要进行web服务调用以进行身份​​验证。
  2. 面包屑。在我现在正在开发的应用程序中,我们有一个面包屑导航栏,这是用户必须按顺序完成的步骤。我使用1个IBAction来处理这些问题,因为它们的状态以一致的方式变化,并且它们都基本上执行相同的操作(在窗体中相应的视图中交换)。