gpt4 book ai didi

ios - UICollectionView 未正确重新加载

转载 作者:行者123 更新时间:2023-11-29 00:26:42 25 4
gpt4 key购买 nike

我正在使用 swift 3 开发一个项目,它包含一个 UICollectionViewUITableView 里面.因此,虽然我设法将所有属性分配给我的 UICollectionViewCell我从服务器获得的类,一旦我运行项目,数据将不会出现在单元格上,除非我滚动我的 UITableView .三个类的结构如下。非常感谢您的帮助。

extension ViewController : UITableViewDelegate, UITableViewDataSource {

func numberOfSections(in tableView: UITableView) -> Int {
if tableView == self.allCategoriesTableView{
return 4
} else {
return 1
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == self.allCategoriesTableView {
return 1
}else if tableView == self.categoryTableView {
return categoryArray.count
}else{
return menuBarArray.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{

if tableView == self.allCategoriesTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "newCell", for: indexPath) as! CollectionItemsTableViewCell
if indexPath.section == 0 {
cell.fillCollectionView(with: category1)
}else if indexPath.section == 1 {
cell.fillCollectionView(with: category2)
}else if indexPath.section == 2 {
cell.fillCollectionView(with: category3)
} else {
cell.fillCollectionView(with: category3)
}


return cell
}else if tableView == self.categoryTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "CategoryCell", for: indexPath) as! CategoryTableViewCell
cell.categoryNameLabel.text = categoryArray [indexPath.row]
cell.layer.cornerRadius = 8
cell.layer.masksToBounds = true

return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuBarCell", for: indexPath) as! MenuBarTableViewCell
cell.menuBarContentLabel.text = menuBarArray [indexPath.row]
return cell
}
}

UITableViewCell 类

class CollectionItemsTableViewCell: UITableViewCell {

@IBOutlet weak var collectionView: UICollectionView!
var category1Json = [JSON?]()

func fillCollectionView(with array: [JSON?]) {
self.category1Json = array
self.collectionView.reloadData()
}
override func awakeFromNib() {
super.awakeFromNib()
self.collectionView.delegate = self
self.collectionView.dataSource = self
loadCategoryDetails()
print("my array col is :",category1Json)
self.collectionView.reloadData()

}

extension CollectionItemsTableViewCell: UICollectionViewDelegate, UICollectionViewDataSource {

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print("collection count is :", category1Json.count)
return category1Json.count
}

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

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

if category1Json.count>0{

cell.titleLabel.text = category1Json[indexPath.row]?["title"].stringValue
cell.healerNameLabel.text = category1Json[indexPath.row]?["healerName"].stringValue
cell.teaserDescriptionLabel.text = category1Json[indexPath.row]?["teaserDescription"].stringValue
cell.priceLabel.text = category1Json[indexPath.row]?["price"].stringValue

cell.musicImageView.image = imageArray [indexPath.row]

}

return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let clickedIndex = songArray[indexPath.row]

print(clickedIndex)
}

最佳答案

您尝试以下代码。

dispatch_async(dispatch_get_main_queue()) {
self.collectionView.reloadData() }

代替

self.collectionView.reloadData()

关于ios - UICollectionView 未正确重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42804331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com