我有一个UICollectionView
嵌入到UITableViewCell
中。 collectionView显示一长串图像,这就是为什么在稍微滚动后我收到内存警告并且应用程序崩溃的原因。图像是使用KingFisher Library缓存的,但是我注意到实际上并没有重复使用单元格,尽管我滚动单元格不会像往常一样重新加载。
在这种情况下,我认为不需要代码,如果需要,我可以发布它。 您是否知道能够重用嵌入到tableViewCell中的collectionView单元的解决方案?非常感谢你!
此处的代码:
UITableViewCell:
override func awakeFromNib() {
super.awakeFromNib()
self.collectionView.delegate = self
self.collectionView.dataSource = self
let layout = UICollectionViewFlowLayout()
// layout.sectionInset = UIEdgeInsets(top: 20, left: 5, bottom: 10, right: 5)
layout.sectionInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
layout.itemSize = CGSize(width: 111, height: 111)
layout.footerReferenceSize = CGSize(width: 354, height: 80)
self.collectionView.reloadData()
self.collectionView.collectionViewLayout = layout
self.collectionView.reloadData()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return tattooStyles.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ProfileTattooCell
let image = self.tattooStyles[indexPath.row].imageURL ?? ""
if let imageURL = URL(string: image) {
cell.loadTattoo(image: imageURL)
}
return cell
}
UIViewController cellForRow:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0{
let cell = tableView.dequeueReusableCell(withIdentifier: "artistPhotoCell") as! artistPhotoCell
cell.tattooStyles = self.tattooStyles
cell.delegate = self
cell.showLoadMore = !areAllPhotosLoaded
return cell
}}
UIViewController CollectionViewHeight:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let section = indexPath.section
if section == self.numberOfSections-1 {
let photosNumber = self.tattooStyles.count
var height = CGFloat(0.0)
if photosNumber > 3 {
height = CGFloat(photosNumber/3 * 121 + 121) }
}else{
height = CGFloat(photosNumber * 121 + 121)
}
}