我做了一个UICollection,它只包含2个单元格,并且页脚包含一个按钮“Show me more”。当我们点击“显示更多”按钮时,它应该在UICollection中再添加2个单元格。
我的问题是,当我点击按钮时,UICollection不会重新加载并附加2个新单元格。我检查了关于无限滚动的不同帖子,但我无法解决我的问题。这是我的代码:
我的按钮和他的功能
lazy var showMoreButton: UIButton = { let button = UIButton(type: .system) button.setTitle("Show me more", for: .normal) button.addTarget(self, action: #selector(handleShowMore), for: .touchUpInside) return button }() func handleShowMore(){ 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
}
}
}
`
答案 0 :(得分:1)
这一行
HomeDatasourceController().collectionView?.reloadData()
似乎是原因。因为您正在创建一个新的HomeDatasourceController&#39;虽然在重装时它应该已经存在。因此,您应该重用已经存在的&#39; HomeDatasourceController&#39;。
的实例你创建了一个实例,例如
let datasourceController = HomeDatasourceController()
现在在
中重用该实例func handleShowMore() {
homeDatasource?.incrementNumberOfUser()
datasourceController.collectionView?.reloadData()
}