2016-12-23 4 views
1

У меня есть UICollectionViewCell, определенный следующим образом:на выходе равна нулю в UICollectionViewCell

import UIKit 

class GalleryCellCollectionViewCell: UICollectionViewCell { 

    @IBOutlet weak var image: UIImageView! 

} 

Xcode положить это автоматически, когда я добавил выход. В

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

функции моего UICollectionViewController «s, я затем попытаться установить изображение. Мой код

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! GalleryCellCollectionViewCell 
     let imagePackage = imagePackages?[indexPath.item] 
     let uiImage = imagePackage?.getUIImage() 
     cell.image.image = uiImage 
     return cell 
    } 

В моем переменном просмотре для отладчика, я вижу, что uiImage не nil. Однако cell.image - nil. Почему это должно быть? Не удалось ли правильно связать его в storyboard?

+2

смысл этой строки 'пусть UIImage = imagePackage? .getUIImage()', показать этот метод. –

+0

'@IBOutlet weak var image: UIImageView!' Никогда не используйте такую ​​же переменную, как она объявлена ​​в фреймворке apple, иначе х-код получит конфликт и поймет код в соответствии с ним. –

+0

Как я вижу, ваш код работает, я, кажется, совершенен, поэтому перепроверьте орфографию 'reuseIdentifier' и отлично ли она выделена для свойства' dequeue' ячейки или нет. –

ответ

-1

Эта линия кажется очень странным:

cell.image.image = uiImage

Почему ваша клетка имеет несколько экземпляров изображения?

Edit:

Этот код кажется нормально. Посмотрим на getUIImage function. Я считаю, что проблема близка к самой функции.

+0

имя розетки OP запутанно ... он определяет его как '' @IBOutlet weak var image: UIImageView! '". Его следует назвать чем-то более значимым. –

-1

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

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! GalleryCellCollectionViewCell 
    let imagePackage = imagePackages?[indexPath.item] 
    let uiImage = imagePackage?.getUIImage() 
    var cellImg:UIImageView = cell!.viewWithTag(5) as! UIImageView; 

    cellImg.image = uiImage 
    return cell 
} 
Смежные вопросы