当不同的按钮调用同一个类时如何传递参数?

时间:2012-07-13 08:01:08

标签: iphone objective-c

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

例如我想要button1来调用displayimageclass

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

5 个答案:

答案 0 :(得分: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
}

然后将动作与Button的事件相关联(TouchUpInside最合适,我猜)。

答案 1 :(得分: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);
    }

我认为这会对你有所帮助。

答案 2 :(得分:0)

你可以像这样实现你的行动方法:

- (IBAction)action:(UIButton *)sender
{
    //sender will be different for different button
}

答案 3 :(得分:0)

设置按钮的标记值并获取

之类的按钮
- (IBAction)action:(UIButton *)sender
{
  UIButton *btn = (UIButton*)sender;
}

答案 4 :(得分: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解决方案是正确的。