当用户滑动当前在此处看到的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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。