UICollectionViews
上有一些帖子,作为一般概念,我了解UICollectionViews
与TableViews
的实施方式类似。关于这个话题已有几篇帖子。
How to make a simple collection view with Swift
我使用UICollectionView
布局8个单元格用于基本装饰目的......就像容纳页面的几个图像一样。图像并不意味着是交互式的,例如。购物车。
我的问题是,如果我在故事板上布置我的单元格,是否需要实现下面的功能(以及其他类似的功能)。
// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
我在故事板上配置了UICollectionView
中的8个单元格(此集合视图是UIViewController
上的视图),每个UICollectionViewCell
都有一个带有的图像视图。我把这一切都放在了故事板上。
我也不想在每个单元格中放置图像。只是一定数量的cels,例如。细胞2,3,5和8。
所以我要做的是创建一个扩展UIControllerViewCell
的类并为图像视图创建IBOutlet
,然后在界面构建器中引用自定义单元类。
而且我认为 - 但可以做一些建议 - 然后我需要做的就是使用下面的函数,因为我只想填充某些单元格,我可以使用if语句作为索引路径,当它是2时,3,5和8:
// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if(indexPath == 2 || 3 || 5|| 8)
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
// Use the outlet in our custom class to get a reference to the UILabel in the cell
cell.image = self.items[indexPath.item]
return cell
}
}
感谢。
答案 0 :(得分:2)
cellForItemAt
必须返回值(在这种情况下为UICollectionViewCell
个实例),但您可以将某些单元格的图像设置为nil
(AKA无图像)
例如:
// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! MyCollectionViewCell
if([2,3,5,8].contains(indexPath.row))
{
// Use the outlet in our custom class to get a reference to the UIImageView in the cell
cell.myImageView.image = self.items[indexPath.row]
} else {
cell.myImageView.image = nil
}
return cell
}
答案 1 :(得分:1)
听起来你问的是静态的UICollectionViewController是不可能的。您将在故事板中创建一个原型单元格,并将IBOutlets与所需的类链接起来。您还需要为UICollectionView实现数据源和委托方法。只需隐藏您不想根据索引显示的图片。