如何使用可滑动的tableview单元实现与iOS Mail应用程序相同的功能?

当用户滑动当前在此处看到的tableview单元格时,我正在尝试复制与库存iOS Mail应用程序相同类型的功能:

《如何使用可滑动的tableview单元实现与iOS Mail应用程序相同的功能?》

有3个选项:更多,标记和存档.当用户点击3中的任何一个时,背景颜色改变以指示它处于突出显示状态.但是,图标和文本不会改变颜色.

我试图达到同样的效果.

我按照本教程指南使用手势制作自定义可滑动的tableview单元格:

How To Make A Swipeable Table View Cell With Actions – Without Going Nuts With Scroll Views

目前我有这个设置:

《如何使用可滑动的tableview单元实现与iOS Mail应用程序相同的功能?》

在每个单元格中包含3个UIViews,其中每个UIView包含一个UIImageView和UILabel,表示Dirty,Edit,Delete.

我正在为3个UIViews添加轻击手势,如下所示:

let dirtyButtonView = cell.viewWithTag(7)
let editButtonView = cell.viewWithTag(8)
let deleteButtonView = cell.viewWithTag(9)

let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(MyVC.buttonPressed))
tapRecognizer.numberOfTapsRequired = 1
dirtyButtonView?.addGestureRecognizer(tapRecognizer)
editButtonView?.addGestureRecognizer(tapRecognizer)
deleteButtonView?.addGestureRecognizer(tapRecognizer)

但是,当用户选择3个选项之一时,我无法实现Mail应用程序具有的突出显示状态功能.

我不确定这是否是正确的实现,即有一个UIView并添加一个手势?

如何实现与iOS Mail app滑动功能类似的功能?

谢谢

最佳答案 我找到了我正在寻找的,
SwipeCellKit,由jerkoch.此库执行与向左滑动时iOS股票应用程序库存相同的操作.无需处理不同的UIViews和UIButton.

要使用,只需符合SwipeTableViewCellDelegate,并在editActionsForRowAt中使用它,如下所示:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
    guard orientation == .right else { return nil }

    let deleteAction = SwipeAction(style: .destructive, title: "Delete") { action, indexPath in
        // handle action by updating model with deletion
    }

    // customize the action appearance
    deleteAction.image = UIImage(named: "delete")

    return [deleteAction]
}

确保将单元格的类更改为SwipeTableViewCell并将其委托设置为:cell.delegate = self.

点赞