0

我有一个UIScrollView页面。在这一点上UIscrollView,我在按钮中有不同的图像,你可以在下面的代码中看到它,我想在UIWebView按下按钮时加载这些图像,我的问题是我怎么知道点击了哪个按钮。你能给我一些实现这个的提示吗?

我是 Objective-C 的新手

这是我的动作:我想为每张图像设置一个动作,现在我对所有图像只有一个动作,我为每张图像设置一个动作

 - (IBAction)openAction:(id)sender {

  NSLog(@"test");
 }
4

4 回答 4

1

实际的按钮被传递给 IBAction。在按钮上设置标签是一种方法。如果您在 Interface Builder 中为所有按钮创建了 outlet,您可以简单地执行以下操作:

- (IBAction)openAction:(id)sender {
    UIButton *b = (UIButton *)sender;

    if ([b isEqual:self.outletButton1]) {
        // Do something with button 1
    }
    else if ([b isEqual:self.outletButton2]) {
        // Do something with button 2
    }
}
于 2012-10-09T13:20:45.217 回答
1

不要对按钮使用相同的标签。对不同的按钮使用不同的标签。例如 [btn setTag:1] 。你可以使用 [btn setTag:i]; 动态价值

于 2012-10-09T13:16:25.350 回答
1

在您的代码或 Interface Builder 中为每个按钮指定一个唯一的标记。

然后在您的操作中,您可以执行以下操作:

- (IBAction)openAction:(id)sender {
   UIButton *b = (UIButton *)sender;
   NSLog(@"button %d is pressed", b.tag);
}

我看到你已经给你的 imageviews 标签了。那些不是按钮!您应该创建内容为图像的 UIButton。参见 UIButton 的 setImage:forState:

编辑:针对您的问题,以下是一个示例:

NSMutableArray *bArray = [NSMutableArray arrayWithCapacity:kNumImages];
NSUInteger i;
for (i = 1; i <= kNumImages; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", i];
    UIButton *btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    btn setImage:imageName forState:UIControlStateNormal];
    btn.tag = 100+i;
    [bArray addObject:btn];
}
于 2012-10-09T13:15:07.233 回答
0

您不必在 UIImageView 上添加 UIButton。相反,您可以像这样为 UIButton 设置图像。

    [btn setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateNormal];

您可以像这样在操作中访问图像:

- (IBAction)openAction:(id)sender {
  if([[btn currentImage] isEqual:[UIImage imageNamed:@"image1"]]){

  }
  NSLog(@"test");
 }
于 2012-10-09T14:56:39.183 回答