如何解决向下滚动iOStableView内的collectionview时,为什么取消选择单元格?
我在tableviewcell内部有一个带有mulitselect的collectionview。当我向下滚动时-选定的单元格被取消选择。 CollectionViewDelegate和DataSource包含在单元格中。 TableView仅包含此单元格。我认为,TableView尝试重用单元格时会出现问题。
class CategoryCollectionCell: UITableViewCell {
@IBOutlet weak var collectionView: UICollectionView!
static let identefier = "CategoryCollectionCell"
private var items: [Value] = [] {
didSet {
collectionView.reloadData()
}
}
override func awakeFromNib() {
super.awakeFromNib()
commonInit()
}
private func commonInit() {
collectionView.delegate = self
collectionView.dataSource = self
collectionView.allowsMultipleSelection = true
}
func config(items: [Value]) {
self.items = items
}
}
extension CategoryCollectionCell: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView,numberOfItemsInSection section: Int) -> Int {
items.count
}
func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CategoryCell.identefier,for: indexPath) as! CategoryCell
cell.config(text: items[indexPath.row].name)
cell.layoutIfNeeded()
return cell
}
}
解决方法
在func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
中,您必须将单元格设置为选中状态(如果以前已设置过)。
iOS会在重用之前重置每个单元。您必须检查数据,是否应该选择显示前的每个单元格。
您可以在自定义UICollectionViewCell类中设置自定义方法,也可以仅将其设置为使用内置的单元格
cell.isSelected = true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。