我已编写此代码以查看不同的图像状态...
UIButton *btnComment = [UIButton buttonWithType:UIButtonTypeCustom];
btnComment.tag=indexPath.row;
[btnComment addTarget:self action:@selector(goToComment:)forControlEvents:UIControlEventTouchDown];
UIImage *img1 = [UIImage imageNamed:@"commentbtndown.png"];
UIImage *img2 = [UIImage imageNamed:@"commentbtnup.png"];
UIImage *img3 = [UIImage imageNamed:@"commentbtnover.png"];
[btnComment setImage:img1 forState:UIControlStateNormal];
[btnComment setImage:img2 forState:UIControlStateHighlighted];
[btnComment setImage:img3 forState:UIControlStateSelected];
[btnComment setImage:img2 forState:(UIControlStateHighlighted+UIControlStateSelected)];
btnComment.frame =CGRectMake(0, 100, 95, 25);
[cell addSubview:btnComment];
[img1 release];
[img2 release];
[img3 release];
但它不起作用,它总是向我显示图像1。
P.S。我已在表格视图单元格中添加了这些图像
答案 0 :(得分:2)
您的代码的一个问题是您应该不发布这些图像变量。 imageNamed:
会返回自动释放的UIImage
。不过,我怀疑这会导致你的问题。
尝试使用|
代替+
进行第四次setImage
来电。
答案 1 :(得分:2)
问题是您正在使用自动释放方法UIImage
创建imageNamed
对象,之后您将释放这些对象,这会导致您的按钮具有无效对象,因此图像将会不显示
尝试删除这行代码,按钮就可以使用
[img1 release];
[img2 release];
[img3 release];
此外,如果您希望按钮接收触摸事件,则必须将其添加到单元格对象的contentView中,否则将显示该按钮,但您将无法点按该按钮。
[cell.contentView addSubview:btnComment]
答案 2 :(得分:0)
您的代码的另一个问题是您将按钮添加到UITableViewCell。而不是:
[cell addSubview:btnComment];
您应该将子视图添加到单元格的contentView
:
[cell.contentView addSubview:btnComment];
但我也不确定这可能会导致你的问题......