У меня есть два пользовательских UICollectionViewCells(AddImageCollectionViewCell
, ItemCollectionViewCell
), которые я загружаю в зависимости от indexpath. Вот мой код для cellForItemAtIndexpath
-
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
var cell :UICollectionViewCell!
if indexPath.row == 0{
cell = collectionView.dequeueReusableCell(withReuseIdentifier: "addImageCell", for: indexPath) as! AddImageCollectionViewCell
}
else{
cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCell", for: indexPath) as! ItemCollectionViewCell
cell.contentImage = self.droppedItemList[indexPath.row] //error here
}
return cell
}
Я получаю сообщение об ошибке «Значение типа UICollectionViewCell?» не имеет члена 'contentImage'». Почему моя ячейка в предложении else не приводится к типу «ItemCollectionViewCell».
Я знаю, я, должно быть, делаю что-то очень глупое. Я был бы очень признателен, если бы кто-то мог указать мне правильное направление.
Может тема действительно глупая или я не правильно сформулировал название темы. Все в порядке, пока я получаю ответ. Что касается культуры, насколько мне известно, если никто другой не запрашивал что-либо, связанное с вашим, и вы четко решаете свою проблему с помощью кода, ваш запрос не будет отклонен.
Спасибо, Наташа, за информативный взгляд на это. :)
Вы объявляете cell
базовым типом UICollectionViewCell
, вот и причина. Возврат ячеек по отдельности
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.row == 0 {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "addImageCell", for: indexPath) as! AddImageCollectionViewCell
return cell
} else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCell", for: indexPath) as! ItemCollectionViewCell
cell.contentImage = self.droppedItemList[indexPath.row]
return cell
}
}
Спасибо за быстрое решение. Я знал, я сделал что-то очень глупое.
Есть идеи, почему за это проголосовали? Я все еще изучаю здешнюю культуру.