【发布时间】:2018-10-26 14:24:12
【问题描述】:
我在 UICollectionViewCell 中显示 UIViewController。每页一个单元格。问题是当我滑动到下一页时,内存会不断增加并且永远不会回来。
这里是相关代码。
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let newsVC: NewsTableVC = {
return storyboard?.instantiateViewController(withIdentifier: "NewsListVC")
}() as! NewsTableVC
let cell = pagerCollectionView.dequeueReusableCell(withReuseIdentifier: "PageCollectionViewCell", for: indexPath) as! PageCollectionViewCell
//Wraping ViewController in CollectionView Cell
return wrapAndGetCell(viewColtroller: newsVC, cell: cell)
}
func wrapAndGetCell(viewColtroller: UIViewController, cell: PageCollectionViewCell) -> PageCollectionViewCell{
//setting tag to remove view when it's being reused
viewColtroller.view.tag = PageCollectionViewCell.SUBVIEW_TAG
addChild(viewColtroller)
viewColtroller.view.frame = cell.contentView.bounds
cell.contentView.addSubview(viewColtroller.view)
viewColtroller.didMove(toParent: self)
return cell
}
这里是 collectionViewCell 类
class PageCollectionViewCell: UICollectionViewCell {
static let SUBVIEW_TAG: Int = 1000
override func prepareForReuse(){
super.prepareForReuse()
let subViews = self.contentView.subviews
for subView in subViews{
if subView.tag == PageCollectionViewCell.SUBVIEW_TAG{
subView.removeFromSuperview()
print("subView removed")
}
}
}
}
我想问题在于在每个单元格中添加子视图,但我也在 perpareForReuse() 方法中删除了子视图。
请帮我找出问题。
【问题讨论】:
标签: ios swift uiviewcontroller uicollectionview uicollectionviewcell