UIScrollView中每个按钮的特定操作

时间:2012-10-09 13:05:36

标签: objective-c ipad uiscrollview uibutton

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

我是Objective-C

的新手

这是我的行动:我希望每个图像都有一个动作,现在我对所有图像只有一个动作,我每个图像都有一个动作

 - (IBAction)openAction:(id)sender {

  NSLog(@"test");
 }

4 个答案:

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

答案 1 :(得分:1)

不要对Button使用相同的标记。对不同的按钮使用不同的标签。 对于ex [btn setTag:1]。 你可以用[btn setTag:i]; 动态值

答案 2 :(得分:1)

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

- (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
    }
}

答案 3 :(得分:0)

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

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

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

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

  }
  NSLog(@"test");
 }