Iphone 如何为数组中的每个UIButton创建一个方法

Iphone 如何为数组中的每个UIButton创建一个方法,iphone,objective-c,ios,uibutton,Iphone,Objective C,Ios,Uibutton,我在下面的代码中有一个UIButton数组。我遇到的问题是,我需要一个与每个按钮关联的唯一方法。此时,任何按下的按钮都使用操作:@selector(按钮按下:) 我被困在如何将一个方法连接到每个按钮上 // Create buttons NSMutableArray* buttonArray = [NSMutableArray array]; NSArray * myImages = [NSArray arrayWithObjects:@"category-ca

我在下面的代码中有一个UIButton数组。我遇到的问题是,我需要一个与每个按钮关联的唯一方法。此时,任何按下的按钮都使用
操作:@selector(按钮按下:)

我被困在如何将一个方法连接到每个按钮上

 // Create buttons
        NSMutableArray* buttonArray = [NSMutableArray array];
        NSArray * myImages = [NSArray arrayWithObjects:@"category-cafe-unsel.png", @"category-food-unsel.png", @"category-clothing-unsel.png", @"category-health-unsel.png", @"category-tech-unsel_phone.png" , @"category-tech2-unsel.png", @"catefory-theatre-unsel.png", @"category-travel-unsel.png", nil];

        // only create the amount of buttons based on the image array count
        for(int i = 0;i < [myImages count]; i++)
        {
            // Custom UIButton
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

            [btn setFrame:CGRectMake(0.0f, 20.0f, 52.0f, 52.0f)];
            [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
            [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal];

            [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
            [buttonArray addObject:btn];
        }
//创建按钮
NSMutableArray*buttonArray=[NSMutableArray];
NSArray*myImages=[NSArray arrayWithObjects:“category cafe unsel.png”,“category food unsel.png”,“category clothing unsel.png”,“category health unsel.png”,“category-tech-unsel_phone.png”,“category-tech2-unsel.png”,“catefory theatre unsel.png”,“category travel unsel.png”,nil];
//仅基于图像数组计数创建按钮数量
对于(int i=0;i<[myImages count];i++)
{
//自定义UIButton
UIButton*btn=[UIButton按钮类型:UIButtonTypeCustom];
[btn设置帧:CGRectMake(0.0f、20.0f、52.0f、52.0f)];
[btn setTitle:[NSString stringWithFormat:@“按钮%d”,i]用于状态:UIControlStateNormal];
[btn setImage:[UIImage ImageName:[myImages objectAtIndex:i]]用于状态:UIControlStateNormal];
[btn addTarget:self action:@selector(按钮按下:)for ControlEvents:UIControlEventTouchUpInside];
[buttonArray添加对象:btn];
}
谢谢你的帮助


:)

最好的选择是对所有
按钮使用
相同的方法
。为此,您应该使用
标记
。所以每个按钮都有自己的标签

btn.tag = i;
此处
标签号
将用于
区分
哪个
按钮
被称为

然后在方法中,您可以获得标签,这也可以通过以下方法完成:

相应的行动是:

-(void)button1:(UIButton*)sender
-(void)button2:(UIButton*)sender
-(void)button3:(UIButton*)sender
-(void)button4:(UIButton*)sender
等等

但是,也可以考虑只使用一个动作方法,并使用标签来分隔动作方法中的按钮。 使用以下代码:

-(void)buttonPressed:(UIButton*)sender
{
    UIButton *btn = sender;
    for(int i = 0;i < [myImages count]; i++)
    {
       if (i == [btn tag]) {

       //Your code

       break;
       }
     }
}
-(无效)按钮按下:(UIButton*)发送者
{
UIButton*btn=发送方;
对于(int i=0;i<[myImages count];i++)
{
如果(i==[btn标签]){
//你的代码
打破
}
}
}
它完全工作得很好。当您获得标记值时,可以根据标记值执行操作

谢谢


Hemang.

我认为设置标签将是一种有效的方法,而不是对不同的按钮使用不同的选择器。
-(void)button1:(UIButton*)sender
-(void)button2:(UIButton*)sender
-(void)button3:(UIButton*)sender
-(void)button4:(UIButton*)sender
-(void)buttonPressed:(UIButton*)sender
{
    UIButton *btn = sender;
    for(int i = 0;i < [myImages count]; i++)
    {
       if (i == [btn tag]) {

       //Your code

       break;
       }
     }
}