我有一个UIScrollView
页面。在这个UIscrollView
我在按钮内有不同的图像,你可以在下面的代码中看到它,我想在UIWebView
按下按钮时加载这些图像,我的问题是我怎么知道哪个按钮是单击。你能给我一些暗示来实现这个吗?
我是Objective-C
的新手这是我的行动:我希望每个图像都有一个动作,现在我对所有图像只有一个动作,我每个图像都有一个动作
- (IBAction)openAction:(id)sender {
NSLog(@"test");
}
答案 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");
}