2016-03-08 6 views
0

Я использую UICollectionView с обычным UICollectionViewCell. Для того, чтобы создать экземпляр моей ячейки в cellForItemAtIndexPath и didSelectItemAtIndexPath, я использую эту строку:экземпляр пользовательского UICollectionViewCell с didHighlightItemAtIndexPath

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

Таким образом, я могу позвонить на мой заказ музыки клетки, а затем я могу управлять ею на основе статуса, что песня (например, если ее игра уже и т. д.).

Например, я могу манипулировать клетки, как это:

music_Cell.song_Title_Label.text = song_Title! 

В конце функции я просто вернуться music_Cell. Все работает отлично .... ПОКА

Это кажется мне, что у меня нет возможности создать экземпляр моей пользовательской ячейки с функцией didHighlightItemAtIndexPath и функции unHighlight потому, что те функции не позволяют возвращать пользовательские UICollectioViewCell , Я хочу иметь возможность делать пользовательские изменения пользовательского интерфейса, когда человек выделяется. До сих пор, единственное, что я мог сделать, это создать экземпляр регулярную клетку, а не мой обычай один:

let cell: UICollectionViewCell = collectionView.cellForItemAtIndexPath(indexPath)! 
cell.contentView.backgroundColor = opus_Page_Primary_Color 

Но я хочу, чтобы быть в состоянии контролировать другие элементы пользовательского интерфейса, а не только цвет фона.

Как я могу это сделать? Я везде искал?

+0

Try, чтобы получить оригинальную ячейку представления коллекции с indexPath. В UITableView что-то вроде self.tableview.cellForRowAtIndexPath (...). Наверняка есть эквивалент представлений коллекции. –

+0

Извините. Не видел ваш последний код. Я на мобильный. Просто добавьте «как MyCustomCellClass» после этой строки. –

+0

@KevinLieser вы правы. Все, что мне нужно было сделать, это заменить UICollectionViewCell именем моего пользовательского класса (MusicCollectionViewCell) и добавить «как! MusicCollectionViewCell». –

ответ

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).

0

Решение:

Все, что я должен был сделать замену UICollectionViewCell с именем моего пользовательского класса CollectionViewCell.

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

Теперь я могу получить доступ ко всем элементам моего пользовательского класса, как так:

cell.song_Title_Label.text = "Song Name" 
Смежные вопросы