单元格按钮 tableView Swift

Cell button tableView Swift

我有一个带有部分的 tableView,每个部分都有你添加的待办事项。 我正在尝试在我使用单元格按钮委托功能单击的 todoItem 上为我的图片制作动画。但我真的不知道如何连接到那个项目并使其动画化。 我想要访问的是与我在 didSelectRow 中一样访问单元格但在这个 cellButtonFunction 中,因为它是我要按下的单元格中的按钮而不是整个单元格。

我想通过按下按钮完成的事情就像这个例子:

cellPressed.image.ishidden = 假 cellPressed.image.animate()

此单元格图像设置了动画 class,只是我需要为此点击特定的单元格

观看了一些 YouTube 视频并进行了研究,但我无法正常工作,所以我希望你们能帮助我


extension ViewController: FirstTableViewCellDelegate {
    func myImageButtonTapped(with index: IndexPath, view: AnimatedCheckmarkView) {
        HapticsManager.shared.selectionVibrate()
        let todo = self.tableViewCoreData[index.section].sortedItems[index.row - 1]

        todo.isMarked = !todo.isMarked
        
        if todo.isMarked == true {
            self.tableViewCoreData[index.section].totalMarked += 1
            view.animate(withDuration: 1.0, delay: 0.7)
            view.isHidden = false
            do {
               try self.context.save()
            }
            catch{
                //error
            }
            tableView.reloadData()
        } else {
            view.isHidden = true
            self.tableViewCoreData[index.section].totalMarked -= 1
            do {
               try self.context.save()
            }
            catch{
                //error
            }
            tableView.reloadData()
        }

这是函数。除了 view.animate() 动画一个随机视图

首先创建委托以接收来自单元格的操作

protocol CellDelegate:AnyObject{
 /// pass arguments as per requirement 
 func cell(buttonDidPressed indexPath: IndexPath)
}

现在在你的单元格中class创建委托的弱引用

class Cell: UICollectionViewCell{
 weak var delegate: CellDelegate? = nil
 var indexPath: IndexPath!

/// code 

 @IBAction func buttonDidPressed(_ sender: UIButton) {
  delegate?.cell(buttonDidPressed: indexPath)
 }
}

现在在你的控制器中确认这个协议

extension ViewController: UICollectionViewDelegate,
                          UICollectionViewDataSource,
                          CellDelegate{
   
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        // let cell : Cell dequeueReusableCell your cell
        cell.delegate = self
        cell.indexPath = indexPath
        return cell
    }

    func cell(buttonDidPressed indexPath: IndexPath){
     // your task on cell click
    }

}

您还可以在单​​元格 class 中使用闭包替代协议