Вы поместили self.photoCollectionView.reloadData()
в асинхронный блок, поэтому let cell = self.photoCollectionView.cellForItem(at: indexPath)
будет запущен непосредственно перед перезагрузкой представления коллекции, поэтому вы получаете nil
для первой ячейки.
Вам необходимо убедиться, чтопосле перезагрузки представления коллекции, я имею в виду, когда все ячейки представления коллекции загружены, вы можете получить и выполнить свои операции.
В качестве альтернативы, вы можете сделать это в cellForItemAtIndexPath
, как показано ниже ...
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CellIdentifier.jobCollectionViewCellIdentifier, for: indexPath) as! <#Your UICollectionViewCell#>
if indexPath.section == 0 && indexPath.row == 0 {
//highlight cell here
}
return cell
}
И если вы хотите выделить ячейку после загрузки всех изображений в виде коллекции, вам нужно проверить источник данных в представлении коллекции.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = ...
if indexPath.row == arrImages.count-1 {
let newIndexPath = IndexPath(row: 0, section: 0)
if let cellImg = self.photoCollectionView.cellForItem(at: newIndexPath) {
self.setBorder(cellImg)
}
}
}