UICollectionView Ячейка с изображением, изменить фон с щелчком в Swift
У меня есть представление коллекции, которое выглядит так:
Синяя рамка - это изображение. Когда я нажимаю их, я хочу, чтобы текст и изображение на короткое время потускнели.
Я нашел этот вопрос, который похож:
И он включил этот ответ в Objective-C:
Если у вас есть CustomCell, у вас должен быть CustomCell.m (файл реализации). В этом файле добавить это, для меня это простой способ:
-(void)setHighlighted:(BOOL)highlighted { if (highlighted) { self.layer.opacity = 0.6; // Here what do you want. } else{ self.layer.opacity = 1.0; // Here all change need go back } }
Я попытался добавить это к своему обычаю UICollectionViewCell
как это:
import UIKit
class DoubleSoundsCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var cellLabel: UILabel!
func highlighted(highlighted: Bool) {
if (highlighted)
{
self.layer.opacity = 0.6;
// Here what do you want.
}
else{
self.layer.opacity = 1.0;
// Here all change need go back
}
}
}
Но при нажатии на ячейку не было заметного влияния на представление моей коллекции. Я добавил это в неправильном месте, или я преобразовал это в Swift неправильным способом?
Если я вызываю метод setHighlighed
тогда я получаю ошибку
[PATH]/DoubleSoundsCollectionViewCell.swift:15:10: Метод 'setHighlighted' с селектором Objective-C 'setHighlighted:' конфликтует с сеттером для 'выделенного' из суперкласса 'UICollectionViewCell' с тем же селектором Objective-C
1 ответ
Так как highlighted
недвижимость в Свифте
Увидеть UICollectionViewCell
декларация в Свифте.
public var highlighted: Bool
Поэтому вам нужно переопределить свойство следующим образом.
class DoubleSoundsCollectionViewCell : UICollectionViewCell {
override var highlighted: Bool {
didSet {
// add your implementation here
}
}
}
Вы всегда должны знать в Swift. Вы должны включить ключевое слово override, если вы что-то переопределяете, если компилятор принимает это без переопределения, то вы делаете что-то не так.