我有一个动态表格视图,它有一个带有按钮的原型单元格,按下时会播放一首歌曲。
我希望按钮上的背景图像在用户按下按钮播放歌曲时更改为“停止”图标,并在用户再次按下按钮停止时更改为“播放”图标这首歌。
为此,我一直在尝试使用:
[self.beatPlayButton setBackgroundImage:[UIImageimageNamed:@"play.png"]forState:UIControlStateNormal];
我的问题是我还没有弄清楚如何只更改正在按下的行中的按钮,因为我正在使用原型单元格。我一直希望找到一种方法,didSelectObjectAtRow:atIndexPath:
因为didSelectRowAtIndexPath:
当按下该行时会触发,但不是它上面的按钮(除非我弄错了)。也许我应该使用标签?我不知道。任何指针将不胜感激。
编辑:我的代码在didSelectRowAtIndexPath
.
这是示例代码 -
- (IBAction)playStopBeat:(UIButton*)sender event:(id)event {
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
if([self.audioPlayer isPlaying])
{
[self.beatPlayButton setBackgroundImage:[UIImage imageNamed:@"play.png"]forState:UIControlStateNormal];
[self.audioPlayer stop];
self.isPlaying = NO;
self.audioPlayer = nil;
}
else {
if (indexPath.row == 0) {
[self.beatPlayButton setImage:[UIImage imageNamed:@"stop.png"] forState: UIControlStateNormal];
}
else if (indexPath.row == 1){
[self.beatPlayButton setBackgroundImage:[UIImage imageNamed:@"stop.png"]forState:UIControlStateNormal];
}
else if (indexPath.row == 2){
...
//code to play song