ios - Collection View cellForItemAt indexPath 未被调用(Swift)

标签 ios swift uicollectionview

我从 Storyboard创建了一个 Collection View Controller ,并将其自定义类设置为 ItemCollectionVC,将其单元格的自定义类设置为 ItemCell,并将其重用标识符设置为单元格

这是我的 ItemCollectionVC 类:

import UIKit

private let reuseIdentifier = "Cell"

class ItemCollectionVC: UICollectionViewController {

var dataSourceItems: [Items] = []
var counterBuildItems: [Items] {
    let weaponItemArray = WeaponItems.weaponItems as [Items]
    let defenseItemArray = DefenseItems.defenseItems as [Items]
    return weaponItemArray + defenseItemArray
}
var freeBuildItems = WeaponItems.weaponItems as [Items]
var captureKrakenItems: [Items] {
    let weaponItemArray = WeaponItems.weaponItems as [Items]
    let abilityItemArray = AbilityItems.abilityItems as [Items]
    return weaponItemArray + abilityItemArray
}

override func viewDidAppear(_ animated: Bool) {

    switch self.presentingViewController!.title! {
    case "CounterBuildVC":
        dataSourceItems = counterBuildItems
    case "FreeBuildVC":
        dataSourceItems = freeBuildItems
    case "CaptureKrakenVC":
        dataSourceItems = captureKrakenItems
    default:
        break
    }
}

override func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return dataSourceItems.count
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! ItemCell
    cell.cellImage.image = dataSourceItems[indexPath.row].image
    print(dataSourceItems.count)

    return cell
}
}

当 collection view controller 出现时,它是空的,这可能是什么问题?

最佳答案

几乎每次我都在 TableView 或 CollectionView 中遇到此问题时,以下三种情况之一导致了此问题:

1) 你的 ViewController 不是你的 UICollectionView 的数据源

2) numberOfRowsnumberOfSections 方法返回 0

3) 您的单元格的高度为 0,要么是由于约束问题,要么是 heightForCell 方法没有/未正确实现。

不可能说出这些问题中的哪一个是您的问题,并且您总是有可能遇到一些奇怪的事情。在探索不太可能的选项之前,请确保这些都不是您的问题。

关于ios - Collection View cellForItemAt indexPath 未被调用(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40068161/

相关文章:

ios - 使用 PUT 方法的 HTTPBody 中的数据会失败,而使用 POST 方法可以正常工作?

ios - 如何在didMoveToView(Swift,SpriteKit)中注册触摸?

ios - 快速从 TableView 中收集数据

ios - 获取 swift 框架的 plist

ios - 使用 collectionView 制作动画水平指示器

ios - 自动滚动到顶部

ios - 删除行后从核心数据中保存和获取 Collection View 单元格

ios - Swift 的步数功能跳线

objective-c - shouldAutorotateToInterfaceOrientation 在 ios6 模拟器中不起作用

ios - 在收集单元格中添加背景 View