0

我正在为 iPhone 开发我正在开发的应用程序有很多按钮,我希望所有按钮都调用同一个类但具有不同的参数

例如,我希望 button1 调用 displayimageclass

和 button2 应该调用同一个类 displayimageclass 所以,不同的方法如何调用同一个类以及在同一个类中如何从调用特定类的位置获取不同的按钮。

4

5 回答 5

1

这几乎是标准的。只需根据需要定义尽可能多的 IBAction 方法。

在 viewController 的 .h 文件中:

- (IBAction)actionButton1:(UIButton *)sender;
- (IBAction)actionButton2:(UIButton *)sender;
- (IBAction)actionButton3:(UIButton *)sender;

在其 .m 文件中:

{
    //react here to button1 pressed
}


- (IBAction)actionButton1:(UIButton *)sender
{
    //react here to button1 pressed
}

- (IBAction)actionButton2:(UIButton *)sender
{
    //react here to button2 pressed
}

- (IBAction)actionButton3:(UIButton *)sender
{
    //react here to button3 pressed
}

然后将操作与按钮的事件相关联(我猜 TouchUpInside 是最合适的)。

于 2012-07-13T08:09:36.830 回答
1

您应该将标签属性添加到您的按钮。假设你的按钮是

button1.tag =1;
button2.tag =2;
button3.tag =3;

当您单击任何按钮时,NSLog 会显示相关的按钮标记号。即你会得到你想要的结果。

- (IBAction)buttonClicked:(id)sender {

        UIButton* button = (UIButton *)sender;
        NSLog(@"The number of tag:%d",button.tag);
    }

我想这会对你有所帮助。

于 2012-07-13T08:21:59.190 回答
0

您是否在寻找 1) 几个按钮执行相同的方法和相同的行为 2) 几个按钮执行相同的方法但根据按钮特性具有不同的行为 3) 每个按钮执行自己的方法。

1)您可以在同一个 IBAction 上注册多个按钮,它们都会调用它并执行相同的代码 2)在方法中所有按钮都已注册(参见:1)可以通过子类化 UIButton 类对按钮进行排序,给出一个表示按钮应该执行什么的枚举值,然后在被调用的方法中使用开关检查枚举值以触发想要的行为

UIBarButtonItem 已经具有此标记属性,因此您可以通过为 Interface Builder 中的每个 UIBarButtonItem 赋予一个值来使用它们,并将它们设置为调用以下方法

- (IBAction) myButtonsMethod:(id)object
  if ([object isKindOfClass:[UIBarButtonItem class]])
  {
    switch ([(UIBarButtonItem *)object tag]) 
    {
      case myFirstTagValue
    ...
    }

3)@Hermann Klecker 解决方案是正确的。

于 2012-07-13T08:33:42.587 回答
0

您可以像这样实现您的操作方法:

- (IBAction)action:(UIButton *)sender
{
    //sender will be different for different button
}
于 2012-07-13T08:06:14.907 回答
0

设置按钮的标签值并获取这些按钮,例如

- (IBAction)action:(UIButton *)sender
{
  UIButton *btn = (UIButton*)sender;
}
于 2012-07-13T08:11:25.487 回答