Невозможно инициализировать UIImage в TableCellView - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь выучить Swift, поэтому этот вопрос может быть немного глупым, потерпите меня, пожалуйста.

У меня есть функция, которая инициализирует такие свойства, как *

private func loadSampleMeals(){
    let photo1 = UIImage(named: "meal1")
    let photo2 = UIImage(named: "meal2")
    let photo3 = UIImage(named: "meal3")

    guard let meal1 = Meal(name: "meal1", photo: photo1, rating: 4) else {
        fatalError("Unable to initialize meal1")
    }

    guard let meal2 = Meal(name: "meal2", photo: photo2, rating: 3) else{
        fatalError("Unable to initialize meal2")
    }

    guard let meal3 = Meal(name: "meal3", photo: photo3, rating: 1) else{
        fatalError("Unable to initialize meal3")
    }

    meals += [meal1, meal2, meal3]
}

ТогдаЯ пытаюсь загрузить их в ячейку таблицы, например -

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier = "MealTableViewCell"

    guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MealTableViewCell else {
        fatalError("The dequeued cell is not an instance of MealTableViewCell.")
    }

    let meal = meals[indexPath.row]

    cell.nameLabel.text = meal.name
    cell.photoImageView.image = meal.photo // <- error here
    cell.ratingControl.rating = meal.rating

    return cell
}

Я получаю ошибку ниже, когда назначаю свойство изображения в приведенном выше коде -

[UITableViewCellContentView setImage:]: нераспознанный селектор отправлен в экземпляр 0x7fa19ed019a0 2018-05-18 14: 12: 28.845232 + 0530 FoodTracker [2440: 67077] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [UITableViewCellContentView setImage:]: unrecognized selectотправлен в экземпляр 0x7fa19ed019a0 '

Я добавил изображения, и они в формате .jpg с именами meal1, meal2 и meal3.Но не знаю, что я делаю не так.Интересно, что у меня есть другое изображение - defaultPhoto в ассистах, и если я закомментирую строку выше, которая выдает ошибку, мой код работает нормально, и эмулятор показывает defaultPhoto изображение.

Вот как выглядит мой актив-

enter image description here

Любая помощь с этим, пожалуйста?Дайте мне знать, если я смогу добавить больше деталей.

Редактировать:

Мои розетки выглядят так -

class MealTableViewCell: UITableViewCell {
    //MARK: Properties
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var photoImageView: UIImageView!
    @IBOutlet weak var ratingControl: RatingControl!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
}

Проблема только сphotoImageView.Два других выхода работают нормально.

Ответы [ 4 ]

0 голосов
/ 21 мая 2018

[UITableViewCellContentView setImage:]: unrecognized selector sent to instance означает, что выход photoImageView в вашей ячейке на самом деле не является UIImageView.По некоторым причинам, выход photoImageView, кажется, вместо этого указывает на представление содержимого ячейки.Я предполагаю, что вы по ошибке связали представление содержимого ячейки с этим выходом вместо просмотра изображения.

Кроме того, иногда помогает выполнить «Очистку» в XCode при возникновении таких ошибок.

0 голосов
/ 18 мая 2018

Ваша проблема в том, что вы по ошибке связали contentView UITableViewCell как UIImageView с именем photoImageView, который наверняка не имеет изображения участника, вызывающего сбой

0 голосов
/ 18 мая 2018

Привет, я объяснил свой ответ изображением, надеюсь, это поможет вам enter image description here

0 голосов
/ 18 мая 2018

Пожалуйста, проверьте, что ваш IBOutlet для UIImageView связан с вашей ячейкой.

...