将自定义参数传递给按钮操作方法

时间:2012-10-17 13:38:48

标签: objective-c

我正在将一堆图像加载到UIScrollView中,然后我调整它们的大小并在每个图像上放置一个按钮,因此当我点击较小图像上的按钮时,它将在新视图中加载完整尺寸的图像。

我正在努力寻找一种合适的方式,以某种方式将图像的URL作为参数传递给单击处理程序作为参数,当单击按钮时,从我读过的内容,将参数传递给回调函数是不可能的。

这是我到目前为止的代码,

for(Card *card in crd){

    pocketImage = [self imageWithImage:[UIImage imageNamed:@"pocket.png"] scaledToSize:CGSizeMake(245/2,80/2)];
    pocketImageView = [[UIImageView alloc] initWithImage:pocketImage];

    cardImage =  [self maskImage:[UIImage imageNamed:@"animal.jpg"]];
    cardImageView = [[UIImageView alloc] initWithImage:cardImage];

    y = (80/2) * inc;

    if (inc % 2){
        x = 125;
    } else {
        x = 10;
        y += (80/2);
    }

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn addTarget:self action:@selector(testMe) forControlEvents:UIControlEventTouchUpInside];
    [btn setFrame:CGRectMake(x,y-40,pocketImageView.frame.size.width,pocketImageView.frame.size.height*2)];

    [pocketImageView setFrame:CGRectMake(x,y,245/2,80/2)];
    [cardImageView setFrame:CGRectMake(x,y-40,245/2,80/2)];

    //add the pocketImageView to the container
    [imageContainer addSubview:cardImageView];
    [imageContainer addSubview:pocketImageView];
    [imageContainer addSubview:btn];

    inc++;
}

回调功能,

-(void)testMe {
    NSLog(@"works");
}

所以基本上只是循环遍历所有图像,然后将它们全部附加到UIScrollView,这很好用,当我尝试将自定义参数传递给testMe时出现问题方法,据我所知这是不可能的,那么我怎样才能点击按钮然后在新视图中显示相应的全尺寸图像?

2 个答案:

答案 0 :(得分:0)

您可以使用iVar /(私人)@property。

只需设置您想要的数据,如下所示:

myTransferVariable = // something you need in you testMe method

并像这样使用

-(void)testMe {
    NSLog(@"%@", myTransferVariable);
}

答案 1 :(得分:0)

您应该可以将操作定义为- (void)testMe:(id)sender {并将其指定为@selector(testMe:)。如果您随后为每个按钮指定一个标签(例如)URL字符串数组中的偏移量,则该方法应该能够使用((UIButton *)sender).tag找到与所选按钮匹配的URL。