Пользовательская коллекция Просмотр ячейки

-2

У меня есть просмотр коллекции с пользовательскими ячейками. Я хочу заполнить ячейки изображениями, извлекая данные из двух мест. Один из них - это массив изображений по умолчанию, а другой - массив, который извлекается после анализа xml web services. Таким образом, итоговый подсчет массива представляет собой суммирование подсчета массива по умолчанию и количества массивов веб-сервисов.

Как получить изображения в методе коллекции cellForItemAt? Может ли кто-нибудь помочь мне в этом отношении?

  • 0
    Оба массива содержат изображение?
  • 0
    да, оба массива содержат изображение. Массив по умолчанию содержит 10 изображений, поэтому первые 10 ячеек будут заняты этими 10 изображениями, начиная с 11-го изображения и далее изображения будут извлечены после разбора XML.
Показать ещё 10 комментариев
Теги:
arrays

2 ответа

0
Лучший ответ

Сверху Вопрос

let cell:SubCategoryCollectionViewCell = self.collectionview3.dequeueReusableCell(withReuseIdentifier‌​: "Cell2", for: indexPath) as! SubCategoryCollectionViewCell

if defaultAnimalArray.count-1 >= indexPath.row{ // ex: 0...7 
let item = defaultAnimalArray[indexPath.row]
cell.subThumbImg?.image = UIImage(named: item as! String)
}else{
//If now defaultAnimalArray.count = 8, indexPath = 8 , But array = 0...4, then,
let item = arrayFromAPI[indexPath.row-defaultAnimalArray.count] // 8-8 = 0
cell.subThumbImg?.image = UIImage(named: item as! String)
}
return cell

Альтернатива 1: -

Объявить defaultArray как var.

До return defautlArray.count+arrayFromAPI.count объединяет массив изображений. ie, defaultArray = defaultArray+arrayFromAPI а возвращаемая переменная становится return defaultArray.count а также без изменений cellForItemAtIndexPath.

Альтернатива 2:

defaultArray как var и не создавайте arrayFromAPI. Просто добавьте новые изображения в defaultArray в XML Parsing. После добавления нового образа reload UICollectionView а также возвращаемую переменную станет return defaultArray.count

Альтернатива 3:

С тем же кодом item на cellForItemAtIndexPath становится,

let item = defaultAnimalArray+arrayFromAPI[indexPath.row]
  • 0
    в Альтернативе 1 вы имели в виду defaultArray, который в моем коде совпадает с defaultAnimalArray?
  • 0
    @Saranya, да ..
Показать ещё 3 комментария
0

задавать

collectionView.delegate = nil
 collectionView.dataSource = nil

Пока вы не получите все изображения из xml web services. Когда вы получите все свои данные, обновите свой массив dataSource как вы сказали

count = default array count + array count from web services

а затем установите delegate и dataSource коллекцииView. Затем в

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell : UICollectionViewCell  = collectionView.dequeueReusableCell(withReuseIdentifier: "identifierCell", for: indexPath) as! UICollectionViewCell

        /// Show Image Code here
        let url : String = dataSource[indexPath.row]
       if let _image = UIImage(named: url){ 
          // This If Will Load the image if it save locally
       } else {
         // Image does not save locally, download image from URL
       }

        return cell
    }

Я обновляю свой ответ, пожалуйста, посмотри и скажи мне, если ты найдешь что-нибудь трудное. Одна вещь, которую вы можете использовать стороннему пользователю SDWebImage для загрузки изображения из URL.

  • 0
    я сделал до этого момента. как установить изображение в cellForItemAt
  • 0
    Тогда, пожалуйста, скажите, какой тип изображений у вас есть в массиве dataSource? Либо у вас есть URL изображений, либо у вас есть изображения в вашем массиве dataSource.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню