使用 UITableView 部分进行分页

Posted

技术标签:

【中文标题】使用 UITableView 部分进行分页【英文标题】:Paging with UITableView Sections 【发布时间】:2015-04-27 21:37:10 【问题描述】:

我的目标基本上是创建一个启用了分页的 tableView,它使用部分来确定页面数量以及您所在的页面。

示例:3 个部分 1 节:3 个单元格 第二部分:14 个单元格 - 像普通 tableView 一样滚动到该部分的最底部,当它到达底部时,如果您用户继续滑动,则转到下一页。 第三部分:8 个单元格 - 滚动到底部并停止。

所以第一页会有 3 个单元格,然后是空白,如果您开始向上滚动,则会出现下一个部分,然后该部分标题会吸附到顶部,您将更改页面

第二页有许多单元格,超过了一次在一个屏幕上的容量,用户滚动到这些单元格的底部,一旦到达底部,可以继续滚动以显示第三节标题,然后是那个标题将捕捉到顶部等

我知道如何创建页面 tableView,它是使用部分而不是视图高度来分页 tableview,我不知道这是可能的

【问题讨论】:

我也面临同样的问题。你做到了吗? @i_Looser 不幸的是没有。还没找到好的解决办法 【参考方案1】:

我必须做一些与您的设计类似的事情。

我需要第一个部分占据主屏幕,第二个部分是无限滚动,向下滚动时在第 1 部分和第 2 部分之间进行分页。另外,向上滚动时,我希望滚动在顶部之前停止。

我知道这与您的情况略有不同,但您可以很容易地计算出每个部分的高度并将其应用到我的设计中。

我是这样做的:

func scrollViewDidScroll(scrollView: UIScrollView) 

    let offsetY = scrollView.contentOffset.y

    if (lastContentOffset > offsetY) 
        tableNode.view.pagingEnabled = offsetY < view.frame.height
    

    lastContentOffset = offsetY



func scrollViewDidEndDecelerating(scrollView: UIScrollView) 

    let offsetY = scrollView.contentOffset.y
    tableNode.view.pagingEnabled = offsetY < view.frame.height


请注意,scrollViewDidEndDecelerating 对于向下滚动时重新启用分页很重要。

另外请注意,当用户在scrollViewDidScroll 函数中向上滚动时,我只设置tableNode.view.pagingEnabled

希望这对将来寻找此问题的任何人有所帮助,因为我希望 @YichenBman 你现在已经想出了一个解决方案。

【讨论】:

以上是关于使用 UITableView 部分进行分页的主要内容,如果未能解决你的问题,请参考以下文章

在 tableviewcell 中使用 UITableview 执行 segue

表视图的 headerView 中的 UITableView

如何在不使用 Api 的情况下在 uitableview 中进行分页?

UITableView 中需要多次点击以进行复选标记

使用 RxSwift 进行分页 API 调用

在 UITableView 中进行分页的最佳方法