Bri*_*ure 4 ios uicollectionview swift
我从故事板创建了一个集合视图控制器,并将其自定义类设置为ItemCollectionVC,将其单元格的自定义类ItemCell设置为,并将其重用标识符设置为Cell
这是我的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
}
}
Run Code Online (Sandbox Code Playgroud)
当集合视图控制器出现时,它是空的,什么可能导致问题?
几乎每次我在 TableView 或 TableView 中遇到它时,都会导致此问题的三个原因之一CollectionView:
1) 你ViewController不是你的数据源UICollectionView
2) numberOfRowsornumberOfSections方法返回 0
3) 单元格的高度为 0,要么是由于约束问题,要么是由于heightForCell未/未正确实施的方法。
不可能说其中哪一个是您的问题,而且您总是可能遇到一些奇怪的事情。在探索不太可能的选择之前,请确保这些都不是您的问题。
如果您非常确定dataSourcecollectionView 的 已连接到 viewController (默认情况下应该如此),那么您应该这样做,reloadData()因为 collectionView 从 读取dataSourceItems。为了理解这种情况,添加一个断点cellForItemAt并添加另一个断点viewDidAppear,然后检查首先调用的是哪一个?
override func viewDidAppear(_ animated: Bool) {
switch self.presentingViewController!.title! {
case "CounterBuildVC":
dataSourceItems = counterBuildItems
case "FreeBuildVC":
dataSourceItems = freeBuildItems
case "CaptureKrakenVC":
dataSourceItems = captureKrakenItems
default:
break
}
collectionView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
18363 次 |
| 最近记录: |