CollectionView reload data

uicollectionview

#1

Здравствуйте!
У меня есть CollectionView ячейки которого содержат в
себе ImageView и Label.
Картинки и текст для этих ячеек хранятся в памяти. При нажатии на ячейку коллекции, происходит переход на другой View, где данные для ячеек изменяются. После нажатия клавиши back, тексты для label изменяются на новые значения. А вот картинки для ImageView остаются прежними, не смотря на то что я использую collectionview!.reloadData в методе viewWillApper. Изображение обновляется только в том случае, если я заново запущу данный CollectionView.
Скажите пожалуйста, как мне обновить imageView?


#2

Вы не меняете изображение в datasource CollectionView.


#3

Вы имеете ввиду эти строчки?
self.collectionView?.dataSource = self

Они прописаны в методе viewWillApper.


#4

Покажите свои dataSourse методы


#6

import UIKit

private let reuseIdentifier = “Cell3”

class CollectionViewController_Experiment: UICollectionViewController {

let baza1                           = Baza()


override func viewDidLoad() {
    
        super.viewDidLoad()
    
}


override func viewWillAppear(_ animated: Bool) {
    
    super.viewWillAppear(true)
    self.collectionView?.delegate = self
    self.collectionView?.dataSource = self

    collectionView!.reloadData()
    
    
}






override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    
    let size2                           = baza1.superTuples(name: "2")
    let x                               = Mirror(reflecting: size2).children.count
    return Int(x+1)
}



override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell3", for: indexPath) as UICollectionViewCell
    let image = cell.viewWithTag(1) as! UIImageView
    let name = cell.viewWithTag(3) as! UILabel
    image.image = nil
    
    if indexPath.row != 0 {
        
        let superTupl                       = baza1.superTuplesShapka(Nomer_tupl: (indexPath.row-1))
        name.text = superTupl.5
        let tupl                            = baza1.superTuplesShapka(Nomer_tupl: (indexPath.row-1))
        
        
        if (tupl.2 == 1 ) {
            
            image.image = UIImage (named: "fon_galochka.png")                 // если в следующем View нажать клавишу back, то при возвращении в этот View данная картинка не обновляется, в отличии от текста, пока не закрою этот View и не запущу его снова
            name.text = UserDefaults.standard.value(forKey: "vplv") as? String     // а вот этот label обновляется сразу же после возвращения в этот View
        }
            
        else{}}
        
        
        
        
    else  {
        
        image.image  = UIImage(named: "shapkastaty")
        name.text                     = ""
    }
    
    
    
    return cell
}





override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    
    
    
    if indexPath.row != 0 {
        numb_cell                           = indexPath.row
        let bazaSh                          = Baza()
        let f                               = bazaSh.superTuplesShapka(Nomer_tupl: (indexPath.row-1) )
        let vc                              = storyboard?.instantiateViewController(withIdentifier: "ViewStaty")  as! ViewController
        vc.obr                              = f.3
        
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
}

}


#7

У вас изображения захардкожены.


#8

Думаю не в этом проблема. Изначально картинка отсутствует, после того как я захожу в следующий контроллер и возвращаюсь обратно, начинает выполняться условие tupl.2 == 1, и вот теперь картинка должна быть присвоена ячейке, которую я нажал. У нулевой ячейки image.image = UIImage(named: “shapkastaty”), и к ней нареканий нет, т,к, она всегда должна иметь одинаковую картинку. А вот с остальными ячейками беда, картинка присваивается ( image.image = UIImage (named: “fon_galochka.png”) ) только после повторного запуска контроллера.
Хардкод я убирал, это не помогло


#9

такая же проблема, в UITableViewCell вставлен UICollectionViewCell с картинками которые не обновляются и переиспользуются от первых ячеек таблицы если просроллить экран
как решилась проблема эта?