在Tableview单元格中快速处理播放/暂停按钮

时间:2018-08-14 06:01:11

标签: ios swift uitableview

我正在尝试在tableview单元中实现播放/暂停按钮。每个单元格都有单个按钮,每当用户单击它时,都应更改按钮图像,还需要调用所需的功能,滚动后也应相同。

下面的代码我正在使用

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) - > UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("productCell") as ? SepetCell
    cell.onButtonTapped = {
       //Do whatever you want to do when the button is tapped here
    }

2 个答案:

答案 0 :(得分:1)

首先请查看tableView单元的每个按钮将具有与之关联的唯一标签,因此,为了更新特定单元格的按钮,您将必须在单元格中定义按钮的标签,然后传递该功能标签可以对选定单元格的特定按钮执行操作。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
  {
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell_identifier", for: 
         indexPath) as! CellClass
      cell.button.tag  = indexPath.row
      cell.button.addTarget(self, action: #selector(playpause), for: .touchUpInside)
  }
  @objc func playpause(btn : UIButton){
       if btn.currentImage == UIImage(named: "Play") {
        btn.setImage(UIImage(named : "Pause"), forState: .Normal)
     }
      else {
        btn.setImage(UIImage(named : "Play"), forState: .Normal)
     }
   // perform your desired action of the button over here
  } 

答案 1 :(得分:1)

Swift最先进的是回调闭包。它们易于实现且非常高效。

在数据源模型中添加属性

false

在Interface Builder中,选择自定义单元中的按钮,然后按⌥⌘4进入“属性”检查器。在弹出菜单var isPlaying = false 中选择State Config,然后从Default弹出菜单中选择适当的图像,对Image状态执行相同的操作。

在自定义单元格中,为该按钮添加一个回调属性以及一个插座和动作(将两者都连接到该按钮)。图像是通过Selected属性设置的。

isSelected

@IBOutlet weak var button : UIButton! var callback : (()->())? @IBAction func push(_ sender: UIButton) { callback?() } 中的控制器中添加回调,cellForRow是数据源数组的当前项。按钮的状态保留在item

isPlaying