当用户滑动当前在此处看到的tableview单元格时,我正在尝试复制与库存iOS Mail应用程序相同类型的功能:
有3个选项:更多,标记和存档.当用户点击3中的任何一个时,背景颜色改变以指示它处于突出显示状态.但是,图标和文本不会改变颜色.
我试图达到同样的效果.
我按照本教程指南使用手势制作自定义可滑动的tableview单元格:
How To Make A Swipeable Table View Cell With Actions – Without Going Nuts With Scroll Views
目前我有这个设置:
在每个单元格中包含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.