在swift

时间:2015-09-28 06:53:39

标签: ios swift uitableview core-data uicollectionview

所以我有这个问题,我必须在两个集合视图和一个表视图上加载一个实体。问题是,主要是我只需要在桌面视图所在的VC上加载一个实体。并且该数据实体具有以下参数:

  • 发动机类型(柴油或汽油)
  • 汽车颜色
  • Max.velocity
  • 生产年份

现在,重点是,根据汽车引擎的类型为tableview上的单元格着色。那么,如果数据实体" Car" Bool值为" isEngineDiesel" = true,那么单元格将为橙色,如果为false,则为浅蓝色。这工作得很好,一个简单的if语句在表视图委托方法加载这样的单元格。但是,现在我必须实现另一个具有两个集合视图的VC,其中,第一个仅加载Diesel引擎Car实体,另一个加载另一个Petrol类型。 所以我想这个问题已经很清楚了。我怎么能做到这一点?因为经过无数个小时的实验,我唯一的想法就是制造了两个实体,其中一个是DieselCar,另一个是PetrolCar。但这意味着改变完整的数据结构,而且,实际上我需要两个表格视图而不是一个表格视图,这看起来并不是一个好主意,因为它会溢出"有所有数据。

那么......有什么想法吗?

编辑:

到目前为止,我只能设法获得细胞标题,但细胞数量的返回值仍然是如何解决的一个谜。 集合视图委托代码:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell
    if let carData = fetchedResultsController?.objectAtIndexPath(indexPath) as? Car {

    cell.layer.cornerRadius = 20
    cell.layer.masksToBounds = true


        if collectionView == collectionViewDiesel {
            if carData.isEngineDiesel == true {
                cell.backgroundColor = UIColor(netHex: 0x8DF060)
                // Display the cell name

                cell.cellTitle.text = carData.cellTitle
            }
        }else if collectionView == collectionViewPetrol {
            if carData.isCarDiesel == false {
                cell.backgroundColor = UIColor(netHex: 0xEB9B2D)
                // Display the cell name

                cell.cellTitle.text = carData.cellTitle
            }
        }
    }
    return cell
}

这是我需要回答的方法:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return 5
}

1 个答案:

答案 0 :(得分:0)

在另一个VC上,你需要两个集合视图的数据结构,所以我认为如果在一个数组中添加对象,则在isEngineDiesel上创建一个字典,如果在另一个数组中添加false,则为相应的柴油和汽油钥匙。 在你的集合视图委托中总是有一个UICollectionView参数的地方检查(你可以使用标签,如果你有插座,甚至可以使用==运算符)从字典基础上加载数据。