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, если вы что-то переопределяете, если компилятор принимает это без переопределения, то вы делаете что-то не так.

Другие вопросы по тегам