如何在 UIScrollView 的末尾添加一个按钮以加载更多?

Posted

技术标签:

【中文标题】如何在 UIScrollView 的末尾添加一个按钮以加载更多?【英文标题】:How to add a button to the end of UIScrollView to load more? 【发布时间】:2016-11-20 02:42:40 【问题描述】:

我有一个带分页的卷轴。我想一次只加载 75 个页面,当用户到达最后一页时,最后一次滑动时会显示一个按钮。必须单击该按钮才能加载更多内容。

与您在附图中看到的 ios Zillow 应用程序相同。

我应该如何添加这个按钮?它是卷轴的一部分还是只是卷轴外面的一个按钮?

【问题讨论】:

【参考方案1】:

所以让我们首先考虑如何初始化我们的表格视图。我们使用

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

返回表格中我们想要的单元格数量,假设我们使用类似

return searchResultsArray.count

但如果我们想要一个“加载更多结果”按钮,那么让我们再添加 1 个单元格

return searchResultsArray.count + 1

好的,现在我们如何在这个新单元格中添加按钮?我们想使用

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

我们会说

if indexPath.row == searchResultsArray.count

(请记住,数组的计数值比数组中最后一个元素的索引大 1,所以这个 if 语句基本上是在说,“如果这个单元格是加载更多单元格”)

然后我们将在这个单元格中创建我们的按钮,我们可以将一个函数链接到按钮(使用选择器),它将结果添加到 searchResultsArray,然后重新加载表格(使用 tableView.reloadData())

如果它是一个(垂直滚动)表格视图,这就是你将如何处理这个问题,但是如果你想在 zillow 中重新创建水平滚动界面,那么你需要使用一个集合视图,如果你这样做会有点复杂' 是 iOS 开发的新手,但仍然使用我上面描述的基本概念。这里有一个很棒的视频可以帮助你:https://www.youtube.com/watch?v=Ko9oNhlTwH0

【讨论】:

【参考方案2】:

我会建议您使用UICollectionView 而不是UIScrollView,因为UIScrollView 您将为您的UIImageView 创建多个对象并将其添加到您的UIScrollView 中,与@ 相比,这将占用更多内存987654326@,与UICollectionView 一样,您可以重复使用相同的单元格,因此与UIScrollView 相比,UICollectionView 消耗的内存将非常少。

最后重新添加按钮,在你的 UICollectionView 中创建两个自定义单元格,一个是显示 UIImageView,一个是显示加载更多按钮,一次获取 75 个结果并在数据源中 numberOfItemsInSection return 75+1 (即您的数组计数 + 1 [+1 以在您想要显示时显示加载更多按钮])

现在在cellForItemAtIndexPath 中比较indexpath.row 计数是否大于您的数组计数,然后为“加载更多”按钮加载单元格。

【讨论】:

以上是关于如何在 UIScrollView 的末尾添加一个按钮以加载更多?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView里面章节长文本的构造

在具有动态高度的视图末尾添加一个 UIButton

在 UIScrollview 的末尾放置一个视图 - Swift

如何在 scrollViewDidScroll 中添加 UIView 并使其滚动到最后?

iPhone UIScrollView,减慢滚动

如何在 UIScrollView 中捏缩放多个 UIImageView