如何在swift 3中的表视图单元格中实现集合视图的分页?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在swift 3中的表视图单元格中实现集合视图的分页?相关的知识,希望对你有一定的参考价值。

这里我有布局,其中我的一个表视图单元格包含集合视图,在此我需要实现分页,我现在无法使用func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)这个函数如何实现表视图的分页可以任何人帮我如何实现这个当它到达我的集合视图的最后一个元素时放置条件,在这里我知道如何实现分页但如何调用需要重新加载的函数?

这是我的函数,用于检测最后一个单元格并使用下面的函数重新加载数据

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
        let obj = items
        let lastElement = (obj.count) - 1
        print(lastElement)
        if !loadingData && indexPath.row == lastElement {
            loadingData = true
            guard let obj = self.listClassModel else { return }
            if ((obj.searchCriteria.pageSize as? Int) != nil) {
                self.collectionView.bottomRefreshControl?.beginRefreshing()
                let viewController = HomeViewController()
                viewController.loadMoreData()
            }
        }
func loadMoreData() {
        DispatchQueue.global(qos: .background).async {
            guard let obj = self.listClassModel else { return }
            let  totalItems = obj.totalCount
            let numberOfItems = obj.searchCriteria.pageSize as! Int
            let float = Float(totalItems)/Float(numberOfItems)
            print(float)
            let totalPages = Int(ceil(float))
            print(self.count)
            if totalPages != self.count {
                self.index += 1
                self.count += 1
                print(self.count)
                    let batchSize = 10
                    let sortField = "name"
                    let sortOrder = "ASC"
                    let conditionType = "eq"
                    let categoryId = 1
                    self.listCategoryDownloadJsonWithURL(listUrl: listUrlWithParameters)
            }
            else {
                self.loadingData = false
            }
            DispatchQueue.main.async {
                // this runs on the main queue
                self.loadingData = false
            }

        }
    }
答案
  1. 将表视图行高设置为自动维

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 44

2.在uitableViewCell中创建uOollectionView的高度的IBOutlet。为tableViewCell中的collectionView设置前导,尾随,顶部,底部约束。

3.在uitableViewCell(如obj CollectionView)下创建uicollection的出口,并在cellForRowAt indexPath方法中添加以下代码

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

    let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! tableCell

    cell.frame = tableView.bounds
    cell.layoutIfNeeded()
    cell.objCollectionView.reloadData()

    cell.objCollectionViewHeightConstraint.constant = cell.objCollectionView.contentSize.height
    return cell;

}

这将自动调整uitableViewCell的高度取决于它的内容。

以上是关于如何在swift 3中的表视图单元格中实现集合视图的分页?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS swift 中的 ARSCNView 中显示 uicollection 视图

在 UICollectionView 中实现按钮点击

如何在表格视图单元格中快速自定义和实现滑块

如何根据swift 3中的集合视图高度动态增加表格视图高度?

为啥两个表格视图单元格中的两个集合视图在 Swift 4 中不起作用?

Swift 3中的集合视图单元格边框颜色取消选择[关闭]