Задать вопрос
@YeahCode

Показать фото/видео из массива в collectionview, scrollview?

Ребята, подскажите
1. Есть массив, где в перемешку image и video. Как лучше идентифицировать URL какой с чем. Поскольку фото и видео идут в разнобой
2. Требуется горизонтальный скрол. Как лучше отобразить это? В collectionview, scrollview или другие варианты?
3. Пока фото либо видео делать через enum и switch или есть другие адекватные варианты?
4. Буду благодарен за любую подсказку, поскольку в сети есть варианты только под видео либо только под фото

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "DefaultCell", for: indexPath) as? SlideShowCollectionViewCell else { fatalError("\nSlide Show Error Cell\n") }
            
            var urlType = [CellType]()
            let urlArray = urlType[indexPath.row]
            
            switch urlArray {
            case .image(var url):
                url = images[indexPath.row]
                cell.imageView.sd_setImage(with: url)
            case .video(let url):
                cell.videoView.addSubview(playerView)
                addPlayer(for: url)
            }
       }
  • Вопрос задан
  • 163 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
briahas
@briahas
ObjC, Swift, Python
1. если надо определить действие при нажатии на ячейку то
- по индексу нажатой ячейки достаешь модельку из urlType и вот тебе и тип
2. коллекшнвьюха
3. их много.
  • можно как у тебя в примере - через энам
  • можно разные модели, но удовлетворяющие одному протоколу (по которому и тип получить можно и урл)
  • можно, вдобавок к предыдущим, еще и ячейки разных типов (вместо одного типа, но с двумя вьюхами imageView и videoView), и по ним понимать
  • ...а можно вообще "костыли" и "треш" городить какие душе угодно

4. Не понятно какие бизнес требования к этой коллекшнвьюхе (читай: шо надо будет чтобы он делал?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы