gpt4 book ai didi

ios - 如何更新之前选择的 CollectionView 单元格和现在的 Swift 4?

转载 作者:行者123 更新时间:2023-11-28 07:53:33 28 4
gpt4 key购买 nike

我有一个水平的收藏 View 。当用户点击一张照片时,会出现一个 UIView 来覆盖照片。1 次只能选择一张照片。这意味着,如果选择了一张照片,如果我点击另一张照片照片,之前的照片将恢复正常。

我在下面实现了这段代码:

 var previousSelectedIndexPath : IndexPath? 
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

if previousSelectedIndexPath != nil {
let previousCell = collectionView.cellForItem(at: previousSelectedIndexPath!) as! photoCell
previousCell.uiViewHeight.constant = 0
}

let currentCell = collectionView.cellForItem(at: indexPath) as! photoCell
currentCell.uiViewHeight.constant = 250
previousSelectedIndexPath = indexPath
}

我得到的是,当 Collection View 首次启动时,它显示了我想要的行为。但是当我点击一张照片,然后向左滚动,然后再次点击一张新照片时,它显示错误

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

我认为是之前选择的照片不再出现在屏幕上,因此无法更新该照片的 UIView 的约束。

我也尝试实现这个解决方案,但也得到了同样的错误:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

let cell = collectionView.cellForItem(at: indexPath) as! photoCell
cell.uiViewHeight.constant = 250
}

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {

let cell = collectionView.cellForItem(at: indexPath) as! photoCell
cell.uiViewHeight.constant = 0
}

那么在这种情况下,我该如何解决这个问题呢?

最佳答案

Ken,不要强制转换你的 UICollectionViewCell,你的应用可能会崩溃。

使用这样的安全代码:

if let currentCell = collectionView.cellForItem(at: indexPath) as? photoCell {
// if succeed, do code
}

关于ios - 如何更新之前选择的 CollectionView 单元格和现在的 Swift 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48983642/

28 4 0
文章推荐: c++ - VBO 渲染速度慢
文章推荐: javascript - 对象 # 没有方法 'User'