我过去使用MGSwipeTableCell成功地实现了滑动删除单元格的功能,但是我的当前任务需要在相同的行为中滑动整个部分。
我目前在UITableView中设置了一个滑动手势识别器,当触发滑动手势时,我会计算出所接收到的触摸位于哪个部分,并删除填充该部分的对象(在Core Data中),然后调用删除动画。
我目前在UITableView中设置了一个滑动手势识别器,当触发滑动手势时,我会计算出所接收到的触摸位于哪个部分,并删除填充该部分的对象(在Core Data中),然后调用删除动画。
//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。如何最好地处理这个问题?是否有其他库允许滑动删除部分(我找不到任何一个)?还是这是我自己必须创建的东西。
UITableView
上进行滑动手势通常会很麻烦,因为不仅UITableView
本身会对滑动手势做出反应,而且它们的单元格也会有相应的反应。这里有一个想法,不要试图在部分单元格上滑动以启动滑动操作,而是为该部分创建一个自定义标题单元格。然后,该标题视图将包含其自己的滑动手势(或按钮)来显示“删除”按钮。当在标题中按下该按钮时,使用.deleteSections(indexSet as IndexSet, with: .left)
方法来删除整个部分。 - Brandon A