按钮上的IBAction

时间:2011-08-31 14:43:05

标签: iphone ios xcode uibutton

讨论。哪个更受欢迎:

带有发件人和一堆if语句的单个IBAction 例如:if (sender == self.whichbuttonpressed)

带有sender和switch语句的单个IBAction 例如:switch (send.tag) //为了便于阅读而做空;

每个按钮的IBAction。

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

由于

PS让你相信你的奶奶正在阅读你的回答,所以请不要讽刺,要真实。

4 个答案:

答案 0 :(得分:2)

您的实施取决于您的应用,但请考虑一下..

假设你正在实现一个数字键盘,有10个按钮(0到9)。按下每个按钮时唯一的区别是数字代表。因此,如果您将每个按钮的标记设置为按钮应该表示的数值,则使用单个IBAction方法处理10个按钮变得微不足道:

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

        // Do something with value...
    }

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

如果你有一个带有许多按钮的视图,但它们彼此无关,那么每个按钮应该有它自己的IBAction方法。在这种情况下这样做可以使每个按钮动作的独特实现更加可读和可维护。

答案 1 :(得分:1)

我更喜欢使用标签,所以

  

一个带发送方的IBAction和一个switch语句ex:switch(send.tag)//为了便于阅读而做空的短信

如果不同按钮的操作明显不同,则最后一种方法是合理的

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

示例:

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