在UITableView中使用按钮播放歌曲

时间:2012-04-07 03:32:38

标签: objective-c cocoa-touch uitableview ios5

我正在创建一个自定义表格,其中包含一个按钮,允许用户在按下时预览歌曲。我的大多数代码都有效但我还没弄明白如何将播放器传递给按下按钮的行对应的特定歌曲。

例如:如果我有两行而且#1说Jay Z和#2说Red Hot Chili Peppers,我想按#1中的按钮来播放Jay并按下#2中的按钮用于Peppers。简单。我的代码存在缺陷,无论我按哪一行按钮我只能播放同一首歌。

我知道为什么会这样,但我不知道如何解决它。我只是想知道是否有人可以用几条线来打我,这可能会让我指向正确的方向。

我无法使用didSelectRowAtIndexPath,因为我想在选择行本身时发生其他事情。

我是否需要为此创建一种方法,还是有一些我忽略的东西?

谢谢!

3 个答案:

答案 0 :(得分:1)

这样的东西
- (void)buttonTapped:(UIView *)sender;
{
    CGPoint pointInTableView = [sender convertPoint:sender.bounds.origin toView:self.tableView];
    NSIndexPath *tappedRow = [self.tableView indexPathForRowAtPoint:pointInTableView];

    // get song that should be played with indexPath and play it
}

答案 1 :(得分:1)

类似于tableView:cellForRowAtIndexPath:将你的按钮标记作为index.row并将下面的函数绑定到按钮的事件内部触摸

-(void)button_click:(UIView*)sender
{
   NSInteger *index = sender.tag;
   //play song on that index
}

我认为这会对你有帮助!

答案 2 :(得分:1)

您还可以设置在tag期间创建的每个按钮的tableView: cellForRowAtIndexPath:属性,然后在调用buttonTapped事件时,查找sender并找到它{ {1}}。 UIView的tag属性仅用于此类问题。

如果您需要更多信息,可以创建一个UIButton子类,用于存储关联歌曲所需的任何或所有信息。再一次,您可以在tag期间设置该信息,以便在点按按钮时进行检索。

cellForRowAtIndexPath