小编Chr*_* R.的帖子

UICollectionView一些单元既不是可见项也不是出列单元

我在我的UICollectionView中有一个问题,其中一些单元格似乎既不是它的一部分indexPathForVisibleItems,也不是从缓存队列中取出的dequeueReusableCell.结果是,某些单元格在滚动期间未收到所需的数据更新并显示旧行为.

为简单起见,我将项目简化为必要的控制器和最小化的故事板.基本上,我有一个NavigationController作为EntryPoint,它包含MainViewController,它本身包含一个带有CollectionViewController的ContainerView.

NavigationController使用默认编辑按钮在编辑和非编辑模式之间切换 - 这将导致在编辑模式下在单元格上显示图像.因此,我实现setEditing并更改了所有可见单元格的图像隐藏属性,另外我在出列时设置了图像隐藏属性 - 假设单元格可见或将来会出列.

这个工作正常,而CollectionView从上到下滚动.但是当我从编辑模式切换回非编辑模式同时滚动到底部然后滚动回到顶部时,一些单元仍然显示图像(更具体:至少相同的行,这是第一个非可见行).不知怎的,我假设出列的单元格和可见单元格将是显示数据的互补部分,这应该导致图像在setEditing调用期间隐藏/取消隐藏(适用于前4行单元格)或隐藏/ dehuing期间取消隐藏(适用于最后几行,除了我的示例中的第三行)

CollectionViewController的代码:

import Foundation
import UIKit
import Photos
class CollectionViewController : UICollectionViewController {

    fileprivate let CELL_ID = "PicCell"
    fileprivate let IMAGE_VIEW_SIZE = 104
    var selectedIndex = -1
    var itemCount = 28

    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)
        print(self.isEditing)
        collectionView?.allowsMultipleSelection = editing
        for indexPath in (collectionView?.indexPathsForSelectedItems)! {
            collectionView?.deselectItem(at: indexPath, animated: true)
        }

        for indexPath in (collectionView?.indexPathsForVisibleItems)! {
            let cell = …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift3

3
推荐指数
1
解决办法
905
查看次数

标签 统计

ios ×1

swift3 ×1

uicollectionview ×1