【发布时间】:2012-07-02 18:20:19
【问题描述】:
我有一个动态表格视图,它有一个带有按钮的原型单元格,按下该按钮时会播放一首歌曲。
我希望按钮上的背景图像在用户按下按钮播放歌曲时更改为“停止”图标,并在用户按下一次按钮时更改为“播放”图标再次停止歌曲。
为了实现这一点,我一直在尝试使用:
[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
【问题讨论】:
-
动作是发生在
didSelectRowAtIndexPath还是按钮发送的某个动作中? -
你能提供一些代码吗?什么动作与按钮相关联?
-
我已更新我的问题以提供更多上下文。谢谢。
标签: iphone cocoa-touch uitableview uibutton didselectrowatindexpath