Я задал аналогичный вопрос на прошлой неделе, но я думаю, что я его сузил до более конкретно, что происходит не так. Пользовательская ячейка загружается и выглядит корректно, когда я использую collectionView.dequeReusableCellWithIdentifier("MenuCell", forIndexPath: indexPath) as MenuCollectionViewCell
«MenuCell» - это идентификатор повторного использования для моей настраиваемой ячейки, а MenuCollectionViewCell - это быстрый файл, содержащий собственный код. От отладки кода я определил, что UIImageView не загружается. Я сделал чек, и это то, что я придумал. Почему ImageView не загружается и появляется только как ноль, которого я не знаю. Я выложу код для файла, где он загружается, и пользовательский код ячейки.UIImageView возвращает нуль в пользовательском UICollectionViewCell
class MenuViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
{
// Not sure if I really need this
@IBOutlet var menuCollectionView: MenuCollectionView!
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view
view.backgroundColor = UIColor(patternImage: UIImage(contentsOfFile: "behind_alert_view.png"))
// This was the fix here
self.menuCollectionView.delegate = self
self.menuCollectionView.dataSource = self
}
// Variables
var menuImagesArray = ["MyProfileIcon.png"]
// Data Source Protocol
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
{
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return menuImagesArray.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
var menuCell: MenuCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("MenuCell", forIndexPath: indexPath) as MenuCollectionViewCell
var image: UIImage!
if ((menuCell.imageView) != nil)
{
image = UIImage(named: menuImagesArray[indexPath.row])
}
menuCell.imageView.image = image
return menuCell
}
}
А вот файл пользовательских ячейки:
class MenuCollectionViewCell: UICollectionViewCell
{
@IBOutlet var imageView: UIImageView!
}
Ошибка, я получаю это прекращение из-за разворачивания ноль значения необязательного. Проблема в том, что UIImageView наверняка, любая помощь в этом будет замечательной!
РЕДАКТИРОВАТЬ/решаемые
Проблема заключалась в том подключение к UICollectionView. У меня была ссылка на него, но я не использовал ее должным образом. Я пытался установить dataSource и делегировать его в раскадровку, и это казалось проблемой для меня. Когда я перешел к коду и сделал ссылку и ссылался на нее так, как я сделал с этими двумя вызовами, она мгновенно ее исправила. Надеюсь, это поможет кому-то другому, если они столкнутся с одной и той же проблемой! Теперь настраиваем его, так как он всплывает!
Вы подключили выход изображения в IB? Вы изменили класс ячейки в IB на MenuCollectionViewCell? – rdelmar
Я попытался подключить изображениеView в IB, и я получил сообщение о том, что вы не можете подключиться к ячейке прототипа. И да, я убедился, что класс был изменен правильно. Может быть, imageView может быть подключен, и я пошел об этом неправильно? – SamG
Розетка должна быть выполнена в пользовательском подклассе ячеек, а не в контроллере (именно поэтому вы получили эту ошибку). – rdelmar