当前位置: > > > Swift - 通过代码让tableview左滑出现的删除按钮消失

Swift - 通过代码让tableview左滑出现的删除按钮消失

我们知道通过实现 editingStyleForRowAt 这个协议方法可以使表格(tableView)具有滑动删除功能。即在任一单元上向左滑动,右侧便会出现删除按钮,点击则会触发相关的方法让我们执行相应的业务逻辑。

这时如果点击表格上任意位置,那么删除按钮便会消失,表格重新还原到初始状态(有动画效果)。
之前有网友问除了通过点击表格让删除按钮消失,还有没有其它办法通过程序调用来实现,比如我们想点击右上角的完成按钮后将出现的删除按钮给隐藏。这里有两种实现办法。


1,调用表格的reloadData()方法

这种方式直接重新加载表格数据,当然滚动条位置不会变。不过删除按钮是直接消失的,没有动画效果。
self.tableView?.reloadData()
当然调用 reloadRows 方法单独重新加载出现删除按钮的单元格也是可以的。
self.tableView?.reloadRows(at: [indexPath], with: .none)


2,设置表格的isEditing属性

每次点击“完成”按钮时,我将表格的 isEditing 设置为 false。删除按钮便会消失,并且有动画效果。
self.tableView?.isEditing = false
当然调用 setEditing 方法也是可以的:
self.tableView?.setEditing(false, animated: true)
评论2
  • 2楼
    2017-02-28 18:58
    martinfly

    hi 最近项目碰到一个问题,想请教一下。如何实现弹出一个半屏高度的VC,类似于今日头条视频feed中视频广告的播放详情页(由于不能贴图,只能这么描述)。

    站长回复

    参考我之前写的这篇文章:Swift - 使用addSubview()方法将StoryBoard中的视图加载进来

    原理是一样的,还有把添加进来的view高度设置为半屏即可。

  • 1楼
    2017-02-10 11:53
    martinfly

    感谢
    我也提供一种,跟reloadData()一样,不过可以仅reload相应的row而不是整个表格:reloadRowAtIndexPath()

    站长回复

    对,这个方法也可以,我在文章中补充下。