Здравствуйте!
У меня есть CollectionView ячейки которого содержат в
себе ImageView и Label.
Картинки и текст для этих ячеек хранятся в памяти. При нажатии на ячейку коллекции, происходит переход на другой View, где данные для ячеек изменяются. После нажатия клавиши back, тексты для label изменяются на новые значения. А вот картинки для ImageView остаются прежними, не смотря на то что я использую collectionview!.reloadData в методе viewWillApper. Изображение обновляется только в том случае, если я заново запущу данный CollectionView.
Скажите пожалуйста, как мне обновить imageView?
CollectionView reload data
Вы имеете ввиду эти строчки?
self.collectionView?.dataSource = self
Они прописаны в методе viewWillApper.
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)
}
}
}
Думаю не в этом проблема. Изначально картинка отсутствует, после того как я захожу в следующий контроллер и возвращаюсь обратно, начинает выполняться условие tupl.2 == 1, и вот теперь картинка должна быть присвоена ячейке, которую я нажал. У нулевой ячейки image.image = UIImage(named: “shapkastaty”), и к ней нареканий нет, т,к, она всегда должна иметь одинаковую картинку. А вот с остальными ячейками беда, картинка присваивается ( image.image = UIImage (named: “fon_galochka.png”) ) только после повторного запуска контроллера.
Хардкод я убирал, это не помогло
такая же проблема, в UITableViewCell вставлен UICollectionViewCell с картинками которые не обновляются и переиспользуются от первых ячеек таблицы если просроллить экран
как решилась проблема эта?