gpt4 book ai didi

ios - UICollectionView如何取消全选

转载 作者:IT王子 更新时间:2023-10-29 05:25:25 26 4
gpt4 key购买 nike

我有一个带有 Collection View 的 FollowVC 和 FollowCell 设置。我可以使用以下代码将所有数据正确显示到我的 uIcollection View 单元格中,没有问题。

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("FollowCell", forIndexPath: indexPath) as? FollowCell {

let post = posts[indexPath.row]

cell.configureCell(post, img: img)

if cell.selected == true {
cell.checkImg.hidden = false
} else {
cell.checkImg.hidden = true
}
return cell
}
}

请注意,我还可以使用以下代码选择和取消选择多个图像

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

if deletePressed == true {
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! FollowCell
cell.checkImg.hidden = false
} else {
let post = posts[indexPath.row]
performSegueWithIdentifier(SEGUE_FOLLOW_TO_COMMENTVC, sender: post)
}
}

func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! FollowCell
cell.checkImg.hidden = true
}

在“选择”模式下,我可以执行每个单元格的选择,并且单元格上会显示一个复选标记。但是,我想要做的是有一个取消按钮来禁用所有选定的单元格并删除 checkImg。

我试过了

    func clearSelection() {
print("ClearSelection posts.count = \(posts.count)")

for item in 0...posts.count - 1 {
let indexP = NSIndexPath(forItem: item, inSection: 0)
followCollectionView.deselectItemAtIndexPath(indexP, animated: true)
let cell = followCollectionView.cellForItemAtIndexPath(indexP) as! FollowCell
cell.checkImg.hidden = true
}
}

程序在这里崩溃,给我一个 fatal error :Unexpectedly found nil while unwrapping an optional error at

let cell = followCollectionView.cellForItemAtIndexPath(indexP) as! FollowCell

我不知道为什么无法将单元格展开为我的包含 checkImg 实例的 FollowCell。我之前已经在 didSelectItemAtIndexPath 的类似情况下使用过它,它似乎有效?

谢谢,

最佳答案

当您清除选择状态时,并非所有选定的单元格都在屏幕上,因此 collectionView.cellForItemAtIndexPath(indexPath) 可能返回 nil。由于你有一个 force downcast,在这种情况下你会得到一个异常(exception)。

您需要修改您的代码以处理潜在的nil 情况,但您也可以通过使用UICollectionView indexPathsForSelectedItems 属性使您的代码更高效

 let selectedItems = followCollectionView.indexPathsForSelectedItems
for (indexPath in selectedItems) {
followCollectionView.deselectItemAtIndexPath(indexPath, animated:true)
if let cell = followCollectionView.cellForItemAtIndexPath(indexPath) as? FollowCell {
cell.checkImg.hidden = true
}
}

关于ios - UICollectionView如何取消全选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38430668/

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