如何在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
}
}
}
- 将表视图行高设置为自动维
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 视图
如何根据swift 3中的集合视图高度动态增加表格视图高度?