我有UITableView
标签和一个按钮来显示音频列表。如何更改UITableViewCell中先前按下的UIButton标签?
一旦按下标有“播放”的按钮,它将变为“停止”并播放音频,如果在其他单元格中按下另一个按钮,则上一个单元格按钮应将其标签更改为“播放”。
现在,我在这里的问题是如何将前一个单元格按钮更改回“播放”?
标签是UITableViewCell
网点和UIButton
在cellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("SongTitleCell", forIndexPath: indexPath) as SongsTableViewCell
let songDic : NSDictionary = arrSongs.objectAtIndex(indexPath.row) as NSDictionary
cell.lblSongTitle.text = songDic.objectForKey("SongTitle") as? String
btnPlayPause = UIButton(frame : CGRectMake(13,2,40,40))
btnPlayPause.tag = indexPath.row
btnPlayPause.setTitle("Play", forState: UIControlState.Normal)
btnPlayPause.addTarget(self, action: "cellSongClicked:", forControlEvents: UIControlEvents.TouchUpInside)
cell.contentView.addSubview(btnPlayPause)
return cell
}
此按钮的动作编程补充说:
func cellSongClicked (sender : AnyObject){
var remote = GetSongData()
remote.delegate = self
var btnCurrentPressed = sender as UIButton
//Play Selected Song
let songDic : NSDictionary = arrSongs.objectAtIndex(btnCurrentPressed.tag) as NSDictionary
if (btnCurrentPressed.currentTitle == "Play") {
remote.PlaySelectedSong(songDic.objectForKey("SongURL") as String!)
btnCurrentPressed.setTitle("Stop", forState: UIControlState.Normal)
} else {
playerContoller.stop()
btnCurrentPressed.setTitle("Play", forState: UIControlState.Normal)
}
}
感谢
谢谢@valfer,我有点困惑在这里,请你调整我的代码在哪里把你的代码... – 2014-12-01 18:37:14
我同意 - 这是最好的解决方案。但是,OP目前正在重用你的单元格*和*为每次调用cellForRowAtIndexPath添加新的按钮作为子视图,所以这是你必须警惕的,特别是当你走这条路线并强制重新加载时。 – 2014-12-01 18:38:32
将代码详细信息添加到我的答案 – valfer 2014-12-01 19:10:03