无限集合视图单元格没有唯一的索引路径

时间:2015-12-25 17:36:18

标签: ios swift uicollectionview uicollectionviewcell nsindexpath

大家好,圣诞快乐,所以我目前正在我的项目中使用这个库创建一个水平的无限滚动集合视图。

Infinite Collectionview库 https://github.com/masoapps/infinite-uicollectionview

我遇到的问题是此collectionview中的每个单元格都没有唯一的索引路径。这意味着我似乎无法访问正确的单元格并对其中的控件执行某些操作。

例如,我正在尝试在已按下的单元格中加粗标签。

加粗标签的功能

    func setNRestLbl(collectionView: UICollectionView, indexPath: NSIndexPath){

        collectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .CenteredHorizontally, animated: true)

// Testing code to see the indexpaths which are visible
                print("Visible cells are - \(cell.newsTypeLbl.text) - NSIndexPath is \(indexPath.row)")
                for cell in collectionView.visibleCells() as! [newsTypeCell] {
                if self.cellKey == cell.newsTypeLbl.text! {

                    cell.newsTypeLbl.font = UIFont(name: "Helvetica-Bold", size: 14)
                }
                else{
                    cell.newsTypeLbl.font =  UIFont(name: "HelveticaNeue", size: 14)
                }

            }
        }
    }

奇怪的行为是,集合视图滚动到正确的项目,但是将上面函数中的粗体应用到带有标签的不正确的单元格中,将其应用到最后一个单元格而不是应该位于中间的单元格,因为所有的索引路径是相同的我假设它只是想猜测哪个是正确的。

我也已经意识到,在调试时有两个单元格出现而不是一个单元格,这可能是一个问题,为什么它正在努力去瞄准正确的单元格?截图如下。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

单元格已经具有selected属性,请使用它。另外,不要在单元格内部使用按钮,只需使用DesignDevelopment等标签,并在覆盖的选定属性中设置字体。 因此,在您的集合视图中的单元子类:

override public var selected: Bool {
    didSet {
        methodThatUpdatesLabelFont()
    }
}



func methodThatUpdatesLabelFont() {
    if selected {
        self.label.font = ...
    } else {
        self.label.font = ...
    }
}