返回集合视图单元时出错

时间:2017-09-08 07:06:26

标签: ios xcode

1.我正在使用两个不同设计的两个集合视图。子类化两个不同的单元格,但我在下面的方法得到错误 它显示缺少返回功能,但我已经返回细胞 2.我应该通过故事板给出不同布局的singel collectinon视图子类

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
if collectionView ==  similarProductCollection || collectionView == moreShpsColectionView
{      
 var productCell = SimilarProductCollectionViewCell()
if collectionView ==  similarProductCollection
{
    productCell=similarProductCollection.dequeueReusableCell(withReuseIdentifier: "collecCell", for: indexPath) as! SimilarProductCollectionViewCell
    return productCell
}
else{
   // productCell=NSNull
    var shopsCell = MoreShpsCollectionViewCell()
shopsCell=moreShpsColectionView.dequeueReusableCell(withReuseIdentifier:"moreCell", for: indexPath) as! MoreShpsCollectionViewCell

  return shopsCell
}  
}

}

3 个答案:

答案 0 :(得分:2)

使用如下:

显示缺少返回函数意味着您不返回外部块中的任何单元格,因此写入如下所示的条件。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
if collectionView ==  similarProductCollection 
{      
 var productCell = SimilarProductCollectionViewCell()

    productCell=similarProductCollection.dequeueReusableCell(withReuseIdentifier: "collecCell", for: indexPath) as! SimilarProductCollectionViewCell
    return productCell

}else{
// productCell=NSNull
    var shopsCell = MoreShpsCollectionViewCell()
shopsCell=moreShpsColectionView.dequeueReusableCell(withReuseIdentifier:"moreCell", for: indexPath) as! MoreShpsCollectionViewCell

  return shopsCell
}

}

答案 1 :(得分:1)

如果这是假的:

if collectionView ==  similarProductCollection || collectionView == moreShpsColectionView
{ 
} 

什么都不返回

示例:

func someFunction() -> Bool {

  let something = true

    if(something){

      return true

    }

}

即使您100%确定它会起作用,也会产生错误。您需要将其更改为:

func someFunction() -> Bool {

  let something = true

    if(something){

      return true

    }else{

      return false

    }

}

答案 2 :(得分:0)

使用如下,它可能有用。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
var cell: UICollectionViewCell?
if collectionView ==  similarProductCollection 
{      
cell = similarProductCollection.dequeueReusableCell(withReuseIdentifier: "collecCell", for: indexPath) as! SimilarProductCollectionViewCell
}else{
cell = moreShpsColectionView.dequeueReusableCell(withReuseIdentifier:"moreCell", for: indexPath) as! MoreShpsCollectionViewCell
}
return cell
}