У нас есть этот код в нашем приложении, который работает нормально для всех версий iOS, кроме iOS 13. В iOS 12 и ниже методы-делегаты, такие как cellForItemAt и willDisplayCell, вызываются без проблем, однако в iOS 13 вызывается только numberOfSections, а другие методы не вызываются.
Я искал изменения API в iOS 13, которые могут привести к этой проблеме, и не нашел ни одного. Я что-то упускаю, чтобы он работал в iOS 13.
Вот мой код:
class PhotoBrowserView: UIView, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate {
var photos: [PhotoURL] = [PhotoURL]() {
didSet {
photoCollectionView.reloadData()
}
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return self.bounds.size
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath)
return cell
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let cell = cell as! SimplePhotoCell
cell.thumbnailButton.isUserInteractionEnabled = false
cell.thumbnailPath = photos[indexPath.item].photoURL.absoluteString
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return photos.count
}
}
Вот как я называю фотографии:
class StoryView: ShowPageView, UIScrollViewDelegate {
private let photosView: PhotoBrowserView = {
return PhotoBrowserView()
}()
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if self.traitCollection.horizontalSizeClass == .compact, viewModel.story.portraitPhotos.count > 0 {
photosView.photos = viewModel.story.portraitPhotos
} else {
photosView.photos = viewModel.story.landscapePhotos
}
}
}