Я только начинаю с делегатами в Свифте.У меня есть collectionView, который будет заполнен конкретными ячейками.Каждая ячейка будет иметь кнопку «Мне нравится», где пользователь может нажать ее, каждое нажатие должно переключаться между двумя различными изображениями сердца.Я настроил делегата и его протокол в классе ячеек.Я вызываю делегата в классе контроллера представления, который содержит коллекцию ячеек.Как я должен изменить изображение сердечной кнопки определенной ячейки, если оно не позволяет мне ссылаться на ячейку и ее свойства?Спасибо !!
Я, очевидно, пытался вызвать переменную heart-button-image IB Action, не повезло.мне нужно просто объединить мой делегат с функцией: "func collectionView (_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell"?Это, конечно, позволяет вам ссылаться на конкретную ячейку, но кажется, что это неправильный подход.
ТАМОЖЕННЫЙ КЛЕТОЧНЫЙ КЛАСС, КОТОРЫЙ ПРОХОДИТ ИНИЦИАЛИЗАЦИЯ ДЕЛЕГАТА:
protocol EventCellDelegate: class {
func likeButtonPressed(toggle: Int)
}
class ProfileEventCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var likeCount: UILabel!
@IBOutlet weak var friendsGoing: UILabel!
@IBOutlet weak var friendGoingPic: UIImageView!
@IBOutlet weak var eventName: UILabel!
@IBOutlet weak var eventDate: UILabel!
@IBOutlet weak var eventTime: UILabel!
@IBOutlet weak var eventOrg: UILabel!
@IBOutlet weak var eventPic: UIImageView!
@IBOutlet weak var eventPrice: UIButton! // WHERE THE HEART IMAGE GOES (bad name sorry)
weak var delegate: EventCellDelegate?
var likeToggle = 1
/*
let redHeart = UIImage(named: "likeheart")
let grayHeart = UIImage(named: "unlikeheart")
var likeToggle = 1
var likeCountValue = 347
*/
@IBAction func eventPricePressed(_ sender: UIButton) {
delegate?.likeButtonPressed(toggle: 1)
}
}
ДЕЛЕГАТИЧЕСКАЯ ФУНКЦИЯ ВНУТРИ МОЕГО ДОМА КЛАСС КОНТРОЛЛЕРА ПРОСМОТРА:
extension HomeViewController: EventCellDelegate {
func likeButtonPressed(toggle: Int) {
//ProfileEventCollectionViewCell.eventPrice <-- doesnt allow
likeToggle = likeToggle + toggle <-- doesnt find
likeToggle
if (likeToggle % 2 == 0) {
eventPrice.setImage(redHeart, for: .normal)
//likeCountValue = likeCountValue + 1
} else {
eventPrice.setImage(grayHeart, for: .normal)
//likeCountValue = likeCountValue - 1
}
}
}
Элемент экземпляра 'eventPrice' нельзя использовать для типа 'ProfileEventCollectionViewCell'
Использование неразрешенного идентификатора 'likeToggle'