UITableViewController带有冻结表头的下拉刷新功能

4
我有一个外观如下的模型:

mockup1

这是一个大型可滚动表控制器。
当部分标题到达页面顶部时,它会像这样冻结在顶部:

mockup2

这很正常。但是,当您回到顶部并刷新后,我希望它做到这一点:

enter image description here

因此,下拉以刷新对话框出现在顶部表头单元格和不再冻结的部分标题之间。
是否可能实现这一点?我在搜索中没有找到这样的实现。

如果你想这样做,那么你需要在分区标题本身中添加下拉刷新,并确保表格中至少有一个分区,拉动表格视图应该添加活动视图,然后在一定时间后移除。 - Sandeep
你最好的选择是创建一个 UIViewController,并将表头作为 UIView 添加到其中,然后在其下方添加一个 UITableView。然后链接它并使用 UITableViewDelegate 协议(稍后添加你的“下拉刷新”插件)。 - sooper
1个回答

1
您可以通过以下方式来实现这一点,
  1. UIScrollView作为UIViewController视图的子视图添加。
  2. UIViewUITableView作为此滚动视图的子视图添加。
  3. 滚动视图中的UIView表示表头单元格。
  4. 节标题可以是UITableview的标题,表内容表示UITableView的单元格。
  5. UIRefreshControl作为UITableView的子视图添加,并设置其目标方法。
  6. UITableviewUIScrollview都实现滚动视图代理- (void)scrollViewDidScroll:(UIScrollView *)scrollView
  7. 当您滚动表格视图时,只要表格视图标题向上移动,就将父滚动视图移动到相应位置。在滚动视图代理中添加if条件来检查此情况。
  8. 当表格视图向下移动时,将父滚动视图移动到UIView表格单元格标题可见后停止滚动UIScrollview并允许表格视图滚动。这将启用UIRefreshControl

这里关键的是 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 方法以及如何实现滚动。您可以添加一个检查 contentOffset 的方法来确定 tableview 和 scrollview 已经滚动了多少。为了限制滚动,您可以在此委托方法中手动设置此值为特定值,之后它将不会再滚动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接