#ios #swift #uicollectionview
#iOS #swift #uicollectionview
Вопрос:
У меня есть массив UIImage по умолчанию и массив имен для метки и ImageView в моей collectionView
ячейке. UIcollectionviews
данные не изменятся после вызова reloadData()
функции и изменения источников по умолчанию для label и ImageView, если я не прокручиваю каждую ячейку экрана и не прокручиваю назад, чтобы увидеть, что данные изменились.
@IBOutlet weak var mycollectionview: UICollectionView!
var castNames = ["", "", "", "", ""]
var collectionviewimages = [UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic")]
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return castNames.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier:
"customcell", for: indexPath) as! MyCollectionViewCell
cell.Initialize(image: collectionviewimages[indexPath.row]!, name:
castNames[indexPath.row])
return cell
}
}
нажав кнопку, я получаю обратно некоторый Json и анализирую его, чтобы изменить источники данных по умолчанию collectionView
. после изменения ot так, как я хочу, я вызываю эту функцию:
mycollectionview.reloadData()
Комментарии:
1. Предоставьте больше кода. В частности, где вы анализируете свои данные и вызываете
mycollectionview.reloadData()
2. Скорее всего, вы вызываете
reloadData
в фоновом потоке.3. @TomasJablonskis я уверен в своих новых данных перед вызовом reloadData() . Я напечатал новый массив и получил то, что ожидал. моя проблема в том, как отображаются новые данные.
4. метка в ячейке изменяется только при удалении из очереди и прокрутке экрана
5. установили ли вы источник данных collectionview и delegate = self
Ответ №1:
Всегда используйте reload Collectionview в главном потоке.
dispatchQueue.main.async {
self.mycollectionview.reloadData()
}
Ответ №2:
Попробуйте добавить это:
CollectionView.delegate = self
CollectionView.datasource = self
Комментарии:
1. уже сделано. Я считаю, что collectionview не будет загружаться без этих 2.