在UICollectionViewController的子类中多次使用collectionView之间的名称冲突

时间:2015-11-17 05:31:32

标签: ios swift uicollectionview ios9

如何克服以下明显的名称冲突。 UICollectionViewController的子类包含这些方法定义,均符合UICollectionViewDelegateFlowLayout

func collectionView(collectionView: UICollectionView, 
    layout collectionViewLayout: UICollectionViewLayout, 
    sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    // ...
    let interimSpacing = collectionView(collectionView, 
        layout: collectionView.collectionViewLayout, 
        minimumLineSpacingForSectionAtIndex: indexPath) // <-- ERROR
    // ..
}

func collectionView(collectionView: UICollectionView, 
    layout collectionViewLayout: UICollectionViewLayout, 
    minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 0
}

Swift编译器(在Xcode 7.1.1中)使用此错误标记指示的行:

  

无法调用非功能类型的值&#39; UICollectionView&#39;

如何在这段代码中对标识符collectionView的多次使用之间的明显名称冲突进行排序?

更新我还尝试在第一个方法定义中重命名参数,如func collectionView(x: ...,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

let interimSpacing = self.collectionView(collectionView, layout: collectionViewLayout, minimumLineSpacingForSectionAtIndex: indexPath.section)

集合视图上的原始委托方法没有传递您从sizeForItemAtIndexPath方法接收的正确参数。

编辑:你还应该注意sectionAtIndex需要indexPath.section而不是整个indexPath