gpt4 book ai didi

ios - 使用 swift 从中删除项目后,CollectionView indexPath 不更新

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

实际上,我为电子商务应用程序开发了一个愿望 list 页面。愿望 list 单元格包含一个 Love(愿望 list ) 按钮。

要求

  1. 点击“爱情(愿望 list )”按钮时删除单元格
  2. 漂亮的删除动画

enter image description here

WishCell - 按钮点击部分

class WishCell: UICollectionViewCell {

var wishButtonTapped : (() -> Void)? = nil

@IBAction func wishBtnTapped(_ sender: Any) {
if let wishBtnTap = wishButtonTapped {
wishBtnTap()
}
}
}

CollectionView CellForRowAt

按钮单击在 CellForRowAt 中处理。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WishCell", for: indexPath) as? WishCell {

cell.configureCell(wishlist: wishlists[indexPath.row])

// Wish Button
cell.wishButtonTapped = {
print("indexPath", indexPath)
print("indexPathRow", indexPath.row, wishlistJSON.count)

// wishlistJSON.remove(at: indexPath.row)
// self.parseWishlistJSON()
self.wishlists.remove(at: indexPath.row)
collectionView.deleteItems(at: [indexPath])
// self.collectionView.reloadData()
self.updateDesign()
}
return cell

} else {
return UICollectionViewCell()
}
}

打印日志

点击第三个单元格

indexPath [0, 2]
indexPathRow 2 5

再次点击第三个单元格

indexPath [0, 3]
indexPathRow 3 5

问题

  1. 删除单元格后collectionView的IndexPath没有更新
  2. 由于数组 indexOutOfBound,导致 wishlistJSON.remove(at: indexPath.row) 处的应用崩溃

最佳答案

我遇到了同样的问题,对我来说,强制 collectionView.reloadData() 就可以了。仍然不清楚为什么删除一行不会更新单元格的 IndexPath...但至少这让它工作了

关于ios - 使用 swift 从中删除项目后,CollectionView indexPath 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479165/

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