【问题标题】:Swipe to delete on entire section in UITableView在 UITableView 中滑动删除整个部分
【发布时间】:2019-01-07 16:42:29
【问题描述】:

我有一个UITableView,它有一个可变数量的部分,每个部分都有一个可变数量的行。每个部分都包含一个部分标题、一个部分页脚和该部分的行。它们在容器内显示和显示。到目前为止,一切都按预期工作。展示我的UITableView 目前的样子:

我现在正在尝试实现在整个部分上向左滑动的可能性,以便该部分的标题、该部分内的行和该部分的页脚向左移动并且显示另一个UIView。我能够分别刷卡单元格,但在整个部分启用此功能在过去两天引起了头痛。这就是我想要实现的目标:

我曾考虑过实现UIGestureRecognizers,但我担心它们可能会与我的UITableView 发生冲突。另外,我开始实现它,但我不知道如何只移动向左滑动的部分。

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

此外,我没有想法,坚持应该如何做。到目前为止,我还没有在 Internet 上找到它 - 至少没有某种工作示例,所以我对如何实现效果的灵感为零。

因此,我想问一下是否有人知道它是如何工作的,以及在实施它时我必须记住什么。非常感谢为我提供可行解决方案的每条线索!

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

【问题讨论】:

标签: ios swift uitableview uigesturerecognizer sections


【解决方案1】:

我认为实现这一点的一种方法是使用包含视图的垂直堆栈视图,该视图包含表格视图和垃圾桶图标。当用户在 tableview 标题上向左滑动时,它将在视图中显示隐藏的垃圾桶图标。我认为每个表格视图只有一个部分,因此更容易跟踪用户刷过的“部分”。

【讨论】:

  • 我确实考虑过实现一个 UICollectionView,其中每个项目都包含一个 UITableView。然而,这导致了一些与 UITableViews 错误关联的意外行为。单元格内部有很多交互,所以如果可能的话,我希望将所有内容都保留在一个 UITableView 中。
  • 如果是这样的话.. 我能想到的唯一选择是获取该部分的框架并呈现一个具有相同表格视图且顶部有图标的视图。但是,我不确定这看起来有多流畅。
【解决方案2】:

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

这行得通。它完成了这项工作,但它为该部分添加了一个叠加层,而不是将其推到左侧。

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

如果没有办法做到这一点,我会考虑保留我现在拥有的解决方案,或者可能实现一个快照功能,该功能会截取屏幕截图并裁剪框架的矩形,将此 UIImage 添加到自定义视图以模拟该部分.但这会很棘手。也欢迎对此想法的任何想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多