使用didHighlightItemAtIndexPath实例化自定义UICollectionViewCell

时间:2016-03-08 23:56:37

标签: ios swift uicollectionviewcell

我正在使用UICollectionView自定义UICollectionViewCell。为了在cellForItemAtIndexPathdidSelectItemAtIndexPath中实例化我的单元格,我使用以下行:

let music_Cell:MusicCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("music_Cell", forIndexPath: indexPath) as! MusicCollectionViewCell

通过这种方式,我可以调用我的自定义音乐单元,然后我可以根据该歌曲的状态进行操作(如果它已经播放,等等)。

例如,我可以像这样操作单元格:

music_Cell.song_Title_Label.text = song_Title! 

在函数结束时,我只返回music_Cell。一切正常......直到

在我看来,我无法使用函数didHighlightItemAtIndexPathunHighlight函数实例化我的自定义单元格,因为这些函数不允许您返回自定义{{ 1}}。我希望能够在此人突出显示时进行自定义UI更改。到目前为止,我唯一能做的就是实例化一个普通的单元格,而不是我的自定义单元格:

UICollectioViewCell

但我希望能够控制其他UI元素,而不仅仅是背景颜色。

我该怎么做?我到处都看了?

2 个答案:

答案 0 :(得分:0)

您可以在自定义UICollectionViewCell子类中处理选择和突出显示的外观。

class MyCell: UICollectionViewCell {
    override var selected: Bool {
        didSet {
            print("selected") // Do your custom selection state here.
        }
    }

    override var highlighted: Bool {
        didSet {
            print("highlighted") // Do you custom highlighting here.
        }
    }
}

您还可以利用selectedBackgroundView属性。将其设置为自定义视图将在选择单元格时在单元格的背景视图上方为该视图设置动画:

public var selectedBackgroundView: UIView?

注意:您应该将可重复使用的单元格出列的唯一时间是cellForItemAtIndexPath(这就是为什么其他委托方法不会返回UICollectionViewCell)。

答案 1 :(得分:0)

解决方案:

我所要做的就是将UICollectionViewCell替换为我的自定义CollectionViewCell类的名称。

let cell: MusicCollectionViewCell = collectionView.cellForItemAtIndexPath(indexPath) as! MusicCollectionViewCell!

现在我可以像这样访问我的自定义类的所有元素:

cell.song_Title_Label.text = "Song Name"