【发布时间】:2017-09-12 14:03:59
【问题描述】:
我制作了一个 UICollection,它只包含 2 个单元格,并且带有一个包含“显示更多”按钮的页脚。当我们点击“Show me more”按钮时,它应该在 UICollection 中再添加 2 个单元格。
我的问题是当我单击按钮时 UICollection 不会重新加载并附加 2 个新单元格。我检查了关于无限滚动的不同帖子,但我无法解决我的问题。这是我的代码:
我的按钮和他的功能
懒惰的 var showMoreButton: UIButton = { 让按钮= UIButton(类型:.system) button.setTitle("Show me more", for: .normal) button.addTarget(self, action: #selector(handleShowMore), for: .touchUpInside) 返回按钮 }() 函数句柄显示更多(){ homeDatasource?.incrementNumberOfUser() HomeDatasourceController().collectionView?.reloadData() }我的收藏 `
var numberOfUser: Int = 2
class HomeDatasource: Datasource, JSONDecodable {
override func footerClasses() -> [DatasourceCell.Type]? {
return [UserFooter.self]
}
override func cellClasses() -> [DatasourceCell.Type] {
return [UserCell.self, TweetCell.self] //UserCell -> section 0 and TweetCell -> section 1
}
override func item(_ indexPath: IndexPath) -> Any? {
if indexPath.section == 1 {
return tweets[indexPath.item]
}
return users[indexPath.item]
}
override func numberOfItems(_ section: Int) -> Int {
if section == 1 {
return tweets.count
}
return numberOfUser //users.count
}
override func numberOfSections() -> Int {
return 2
}
func incrementNumberOfUser() {
if numberOfUser <= users.count {
numberOfUser = numberOfUser + 2
}
}
}
`
【问题讨论】:
-
你确定所有的方法都被正确调用了吗?是否调用了按钮单击方法“handleShowMore”?用户数量真的增加了吗?重新加载后调试时“numberOfItems”是否真的返回 4 而不是 2?为什么属性“numberOfUser”不是您的“HomeDatasource”类的一部分?
-
您是否还确定这些行中的选项不是 nil 'homeDatasource?.incrementNumberOfUser() HomeDatasourceController().collectionView?.reloadData()'?
-
是的,方法handleShowMore被调用,numberOfUser递增。但是单元格没有更新。也许我需要在重新加载数据之前清除数据源。
-
所以第一次构建collectionview时,方法'numberOfItems'返回2,第二次按下按钮后,再次调用方法'numberOfItems'并返回4。这是正确的吗?
-
您能否发布“UICollectionViewDataSource”委托方法的实现?
标签: ios swift swift3 uicollectionview