我在我的应用程序中创建了数百个动态UIButtons
。在创建这些UIButtons
时,我为每个人添加了一个标记。
我想要做的是能够在点击时更改UIButton
的背景图像。
如果我有UIButton
标签而不是我如何更改UIButton
的背景图片?
答案 0 :(得分:1)
您可以按发件人标签更改按钮图像赞:
-(IBAction)changeImage:(id)sender
{
[sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",[sender tag]]] forState:UIControlStateNormal];
}
如果您拥有数组中的所有图像名称,则可以执行以下操作。
-(IBAction)changeImage:(id)sender
{
[sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[MyImagearray ObjectAtindex:[sender tag]]]] forState:UIControlStateNormal];
}
如果这不是您想要的,请正确指定您的问题。
希望它有所帮助。
答案 1 :(得分:1)
点击按钮可以通过多种方式完成此操作,但有两种最佳方法可以将其放入switch statement
这样的
- (IBAction)shouldChangeImage:(id)sender
{
switch([sender tag]) {
case 1:
[sender setBackgroundImage:[UIImage imageNamed:@"myFirstImage.png"] forState:UIControlStateNormal];
break;
case 2:
[sender setBackgroundImage:[UIImage imageNamed:@"mySecondImage.png"] forState:UIControlStateNormal];
break;
// And so on for each button tag and then have a default for those that are not listed.
default:
[sender setBackgroundImage:[UIImage imageNamed:@"myDefaultImage.png"] forState:UIControlStateNormal];
break;
}
}
这对数百个按钮不好,但仍然可以使用。如果您的所有图像命名完全不同,这也是最好的方法,但是如果您将图像命名为相同,并且只是为它们添加标签编号,这将创建更高效的代码并且更容易阅读。你会这样做的。
- (IBAction)shouldChangeImage:(id)sender
{
[sender setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"myImage-%d.png",[sender tag]]] forState:UIControlStateNormal];
}
注意整个事情是如何在一行上的,这样更容易阅读,效率更高。
您也可以使用else if statement
,但如果您有数百人,我会推荐一行。
希望这有帮助
答案 2 :(得分:0)
答案 3 :(得分:0)
-(IBAction)btnclicked:(id)sender
{
int tag=sender.tag;
UIImage * newImage=[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",tag]];
[sender setBackgroundImage:newImage forState:UIControlStateNormal];
}
答案 4 :(得分:0)
///This bellow line for Normal Image with button tag just put image with tag and add Normal.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dNormal.png",btnGo.tag]] forState:UIControlStateNormal];
///This bellow line for UIControlStateHighlighted Image with button tag just put image with tag and add Highlited.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dHighlited.png",btnGo.tag]] forState:UIControlStateHighlighted];
///This bellow line for UIControlStateSelected Image with button tag just put image with tag and add Selected.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dSelected.png",btnGo.tag]] forState:UIControlStateSelected];
并在按钮单击方法中将其设置为选中..
对于EX:
-(IBAction)btnClicked:(id)sender{
UIButton *btn = (UIButton*)sender;
[btn setSelected:YES];
}
答案 5 :(得分:-1)
试试这个
if(photo.tag==TagNum) [photo setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];