滑动即可删除UITableView中的整个部分

时间:2019-01-07 16:42:30

标签: ios swift uitableview uigesturerecognizer sections

我有一个UITableView,其中有可变数量的部分,每个部分都有可变数量的行。每个节都包含一个节标题,一个节脚和该节的行。它们在容器内显示和显示。到现在为止,一切都按预期进行。为了演示我的UITableView当前的样子:

current tableview

我现在正在尝试实现在整个节上向左滑动的可能性,以便该节的标题,该节内的行和该节的页脚向左移动,显示另一个UIView。我可以单独刷一下单元格,但是在过去两天中启用整个部分的此功能都令人头疼。这是我想要实现的:

desired result

我曾考虑过实施UIGestureRecognizers,但恐怕它们可能会与我的UITableView发生冲突。另外,我开始执行它,但是我不知道如何仅将向左滑动的部分移到该位置。

然后我想我可以实现一个UIScrollView作为每个部分的容器。我如何实现这一目标仍然是一个谜,但是,如果可以做到的话,这似乎是一个可能的解决方案。

此外,我没有想法,只能坚持该怎么做。到目前为止,我还没有在Internet上找到这种东西-至少没有某种可行的示例,因此,我对实现这种效果没有任何启发。

因此,我想问一问,是否有人对它如何工作以及在实施时必须记住的想法有所了解。感谢所有指向我提供可行解决方案的线索!

编辑:我已经看到今天下午可能重复的记录。但是,那里的建议在标题上显示touchesBegan(),在我的情况下不起作用,因为我需要整个部分都可以“拖动”。

2 个答案:

答案 0 :(得分:0)

我认为,实现此目标的一种方法是使用包含视图的垂直stackview,该视图包含tableview和垃圾桶图标。当用户在tableview标头上向左滑动时,它将在视图中显示隐藏的垃圾桶图标。我认为每个表视图只有一个部分,因此可以更轻松地跟踪用户刷过哪个“部分”。

答案 1 :(得分:0)

我目前设法安排了类似的解决方案。我用rect(forSection:int)截取该部分的矩形,添加一个UIPanGestureRecognizer,如果开始触摸,我会在UITableView的顶部添加一个UIView,计算手指的位置,然后让Cudtom UIView跟随。当达到某个点(从UITableView的左边缘到100)时,该部分将通过deleteSections(indexSet:with :)删除。

这有效。它可以完成工作,但是会向该部分添加覆盖,而不是向左推。

因此,我要问的是有人知道是否有任何方法可以为一个特定节或UIView的某个区域设置偏移量,因此我可以偏移该节的矩形。我已经能够在整个UITableView上设置setContentOffset,但这不是期望的结果。

如果没有办法执行此操作,则可以考虑保留我现有的解决方案,或者实现快照功能,该功能可以截取屏幕截图并裁剪框架的矩形,然后将此UIImage添加到自定义视图中以模拟该部分。但这将是棘手的。也欢迎对此想法有任何想法。