我有一个CollectionView,它显示从在线Web应用程序填充的单元格,当单击该应用程序时,会给予从该Web应用程序中删除的选项。
我使用了一个完成处理程序,只在API调用成功并且web应用程序不再存储该单元格时才重新加载数据。然而,reloadData()在被调用时不会少显示一个单元格。我尝试了layoutIfNeeded()、setNeedsDisplay()和collectionViewLayout.invalidateLayout()。
它们都不执行任何操作,被删除的单元格始终保留在那里。**但是,如果我使用导航控制器向后移动,然后再次前进到CollectionView视图,它就消失了。**有人能提出解决方案吗?
@IBOutlet weak var inviteCollectionView: UICollectionView
func declineInvite(id: Int)
{
requestModel.deleteRequest(id: id, completion: { success in
if(success)
{
DispatchQueue.main.async {
print("This happens")
self.inviteCollectionView.collectionViewLayout.invalidateLayout()
self.inviteCollectionView.reloadData()
self.inviteCollectionView.layoutIfNeeded()
}
}
else{
print("Failed deleting group")
}
})
}
更新章节中的项目数量:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return requestTuples.count
}
请求元组来自
override func viewDidLoad() {
(requestModel.getRequests()
{(returnValue)
in self.requestTuples = (returnValue)
})
2条答案
按热度按时间xu3bshqb1#
删除请求的问题在于,您没有从数组
requestTuples
中移除具有指定id的项,而只是重新加载了collectionViewsr4lhrrt2#
为了避免重新加载整个集合(效率非常低),最好使用deleteItems函数(当然总是在用源代码更新数组之后!)
https://developer.apple.com/documentation/uikit/uicollectionview/1618060-deleteitems