gpt4 book ai didi

ios - UICollectionView 在 UITableViewCell 中被销毁

转载 作者:行者123 更新时间:2023-11-30 11:08:50 26 4
gpt4 key购买 nike

如何在重用之前清理 UITableViewCell ?在 cellForRow TableView 中,我设置了 viewModel,在 didSet 中,我更改了 collectionView 高度约束,但是当我滚动得非常快时,集合会被完全破坏。

func setup(collectionView: UICollectionView) {
if self.collectionView != collectionView || self.collectionView == nil {
collectionView.register(UINib(nibName: "HomeRecommendationCollectionViewCell", bundle: nil),
forCellWithReuseIdentifier: HomeStoryboardConsts.Identifier.homeRecommendationCollectionViewCell.rawValue)
collectionView.contentInset = UIEdgeInsetsMake(0, 10, 0, 10)
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
layout.minimumInteritemSpacing = 10
}

disposeBag = DisposeBag()
items.asObservable()
.subscribe(onNext: { [weak collectionView] _ in
collectionView?.reloadData()
})
.addDisposableTo(disposeBag)

self.collectionView = collectionView
}
}

Collection View 设置

View 模型设置:

   var viewModel: TitleAccessoryButtonCollectionViewModel? {
didSet {
guard let viewModel = viewModel else {
return
}
titleLabel.text = viewModel.title
if let buttonTitle = viewModel.accessoryButtonModel?.title {
setAccessoryButtonTitle(buttonTitle)
}else{
accessoryButton.hideTitleLabel()
}

if let buttonImage = viewModel.accessoryButtonModel?.image {
accessoryButton.buttonImageView.image = buttonImage
}
else {
accessoryButton.hideImageView()
}

sectionContentImage.image = viewModel.sectionContentImage
titleLabelLeadingConstraint.constant = viewModel.titleLabelLeadingSpacing
accessoryButton.isHidden = viewModel.hideAccessoryButton
sectionContentView.isHidden = viewModel.hidePremiumContentView
let collectionViewModel = viewModel.collectionViewModel
collectionViewHeight.constant = CGFloat(collectionViewModel.height)
collectionViewModel.setup(collectionView: collectionView)
collectionView.delegate = collectionViewModel.delegate
collectionView.dataSource = collectionViewModel.dataSource
collectionView.reloadData()
}
}

我也在控制台中2018-09-19 14:27:52.335285+0200 App[76102:8433084] UICollectionViewFlowLayout 的行为未定义,因为:2018-09-19 14:27:52.335409+0200 App[76102:8433084] 项目高度必须小于 UICollectionView 的高度减去部分插入顶部和底部值,减去内容插入顶部和底部值。

最佳答案

如果您有用于 tableview 单元格的自定义 tableviewcell 类。然后有一个名为 prepareForReuse() 的方法。使用该方法清理单元格并为新布局做好准备。

关于ios - UICollectionView 在 UITableViewCell 中被销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52405231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com