滑动以删除UITableView(iOS)中的整个部分

时间:2017-10-13 22:58:35

标签: ios swift uitableview

过去我使用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。解决这个问题的最佳方法是什么?是否有另一个允许滑动删除部分的库(我找不到任何部分)?或者这是我必须自己创造的东西。

2 个答案:

答案 0 :(得分:2)

我没有测试过这个,但想法如下。观看视图(self.header)并使用touchesBegan...方法检测用户将手指放在屏幕上。然后,使用touchesMoved...方法跟随手指并计算最后一个偏移与下一个偏移之间的差异。它应该增长1(或更多),具体取决于用户移动手指的速度。使用此值减去单元格origin.x的{​​{1}}。

contentView

答案 1 :(得分:0)

Brandon的答案是正确的,但是,当使用触摸开始和其他触摸委托方法时,INSPullToRefresh库存在问题。

我必须做的是实现UIPanGestureRecognizer并在触发手势识别器事件时跟踪触摸