【发布时间】:2017-10-13 22:58:34
【问题描述】:
过去我使用MGSwipeTableCell 滑动以消除单元格取得了很大的成功,但我当前的任务调用以相同的行为滑动整个部分。
我目前在 UITableView 中有一个滑动手势识别器,当触发滑动手势时,我计算收到触摸的部分,并删除填充该部分的对象(在核心数据中),然后调用删除动画:
//Delete objects that populate table datasource
for notification in notifications {
notificationObject.deleted = true
}
DataBaseManager.sharedInstance.save()
let array = indexPathsToDelete
let indexSet = NSMutableIndexSet()
array.forEach(indexSet.add)
//Delete section with animation
self.notificationsTableView.deleteSections(indexSet as IndexSet, with: .left)
这可行,但并不理想。理想情况下,我们希望用手指拖动整个部分(当在某个点释放时,它会离开屏幕),类似于 MGSwipeTableCell。解决这个问题的最佳方法是什么?是否有另一个库允许滑动删除部分(我找不到)?或者这是我必须自己创造的东西。
【问题讨论】:
-
UITableViews 上的滑动手势通常很脏,因为UITableViews 不仅会对滑动手势做出反应,而且它们的单元格也会做出反应。这里有一个想法,而不是打算在部分中的单元格上滑动来启动滑动,为什么不为该部分创建一个自定义标题单元格。因此,标题视图将包含其自己的滑动手势(或按钮)以显示“删除”按钮。当在标题中按下该按钮时,使用.deleteSections(indexSet as IndexSet, with: .left)方法删除整个部分。 -
这是个好主意,但问题不在于滑动手势;问题是如果你明白我的意思,整个部分及其嵌套表需要随着手指的触摸一起拖动
标签: ios swift uitableview