UICollectionViewController 不显示自定义 UICollectionViewCell 的子视图
UICollectionViewController not showing subviews of custom UICollectionViewCell
我打算在集合视图中使用自定义单元格来概述产品。我已设置好所有内容,未收到任何错误,但不知何故单元格的内容未显示。
我有
- 创建了 UICollectionViewCell
的子class
- 在故事板中添加了所有子视图并将它们作为 IBOutlets 连接到我的 class
- 使用
self.collectionView!.registerClass(ProductCell.self, forCellWithReuseIdentifier: reuseIdentifier)
注册了自定义单元格
- 检查了数据源,那里没有错误。这是 numberOfItemsInSection:
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
var items: Int = 0
if (section == 0) {
if (currentCategory == nil) {
items = sharedStore.categories.count
} else {
items = currentCategory.categories.count
}
} else if (section == 1) {
if (currentCategory == nil) {
items = sharedStore.products.count
} else {
items = currentCategory.items.count
}
}
return items
}
- 设置 cellForItemAtIndexPath:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ProductCell
cell.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.05)
cell.layer.cornerRadius = 5
//initialize shit
cell.titleLabel = UILabel()
cell.priceLabel = UILabel()
if(indexPath.section == 0) {
let current: Category!
//get model object
if(currentCategory == nil) {
if(sharedStore.categories.count > 0) {
current = sharedStore.categories[indexPath.row] as! Category
} else {
current = nil
}
} else {
if(currentCategory.categories.count > 0 ) {
current = currentCategory.categories[indexPath.row] as! Category
} else {
current = nil
}
}
cell.itemImage = UIImageView(image: UIImage(named: "folderImage.png"))
cell.itemImage.hidden = false
cell.titleLabel.text = current.title as String
cell.priceLabel.hidden = true
}
return cell
}
单元格为空。没有图像,没有标题,也没有价格标签。
我知道数据源工作正常,因为当我添加产品时,它会显示一个新单元格。
关于如何将我的项目放入单元格有什么建议吗?
任何帮助将不胜感激:)
我想通了:出于某种原因,当您将子视图添加到故事板中的自定义 UICollectionViewcell 时,它不会在您 运行 时自动将它们添加到单元格。因此,您必须 cell.addSubview(subview)
对该单元格的所有属性进行操作,在自定义单元格 class 或 cellForItemAtIndex 中进行操作。
我打算在集合视图中使用自定义单元格来概述产品。我已设置好所有内容,未收到任何错误,但不知何故单元格的内容未显示。
我有
- 创建了 UICollectionViewCell 的子class
- 在故事板中添加了所有子视图并将它们作为 IBOutlets 连接到我的 class
- 使用
self.collectionView!.registerClass(ProductCell.self, forCellWithReuseIdentifier: reuseIdentifier)
注册了自定义单元格
- 检查了数据源,那里没有错误。这是 numberOfItemsInSection:
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
var items: Int = 0
if (section == 0) {
if (currentCategory == nil) {
items = sharedStore.categories.count
} else {
items = currentCategory.categories.count
}
} else if (section == 1) {
if (currentCategory == nil) {
items = sharedStore.products.count
} else {
items = currentCategory.items.count
}
}
return items
}
- 设置 cellForItemAtIndexPath:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ProductCell
cell.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.05)
cell.layer.cornerRadius = 5
//initialize shit
cell.titleLabel = UILabel()
cell.priceLabel = UILabel()
if(indexPath.section == 0) {
let current: Category!
//get model object
if(currentCategory == nil) {
if(sharedStore.categories.count > 0) {
current = sharedStore.categories[indexPath.row] as! Category
} else {
current = nil
}
} else {
if(currentCategory.categories.count > 0 ) {
current = currentCategory.categories[indexPath.row] as! Category
} else {
current = nil
}
}
cell.itemImage = UIImageView(image: UIImage(named: "folderImage.png"))
cell.itemImage.hidden = false
cell.titleLabel.text = current.title as String
cell.priceLabel.hidden = true
}
return cell
}
单元格为空。没有图像,没有标题,也没有价格标签。 我知道数据源工作正常,因为当我添加产品时,它会显示一个新单元格。
关于如何将我的项目放入单元格有什么建议吗?
任何帮助将不胜感激:)
我想通了:出于某种原因,当您将子视图添加到故事板中的自定义 UICollectionViewcell 时,它不会在您 运行 时自动将它们添加到单元格。因此,您必须 cell.addSubview(subview)
对该单元格的所有属性进行操作,在自定义单元格 class 或 cellForItemAtIndex 中进行操作。