使用Xib在Tableview标头中快速重新加载CollectionView

时间:2018-12-30 12:05:43

标签: ios swift xcode uitableview xib

我尝试实现有关产品的详细视图。我将tableview用于产品详细信息,并决定在tableview标头中为产品图像创建collectionview。我创建了一个Xib文件,其中包括一个集合视图和2个标签。我实现了这个Xib to tableview标头。我可以重新加载tableview行,但是没有重新加载标头中的collectionview。

如何重新加载此收藏夹视图?

我在提取json后使用此代码,它使我可以在表视图单元格中显示参数。

let sectionIndex = IndexSet(integer: 0)
self.tableView.reloadSections(sectionIndex, with: .none)

在viewDidLoad()

if element.result.productImages?.count ?? 0 > 0 {
    for x in element.result.productImages! {
        print(x)
        self.productImages.append(x.imageUrl)
        self.productDetailHeaderView.productImagesCollectionView.reloadData()
    }
}

在CellForRowAt

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProductImagesCollectionViewCell", for: indexPath) as! ProductImagesCollectionViewCell
    cell.productImage.sd_setImage(with: URL(string: "\(productImages[indexPath.row])"), placeholderImage: UIImage(named: "placeholder"))
    return cell
}

-

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let v : ProductDetailHeaderView = UIView.fromNib()
    productDetailHeaderView = v
    productDetailHeaderView.translatesAutoresizingMaskIntoConstraints = false

    productDetailHeaderView. productImagesCollectionView.register(UINib(nibName: "ProductImagesCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ProductImagesCollectionViewCell")

    productDetailHeaderView.backgroundColor = .yellow


    return productDetailHeaderView
}

谢谢。

1 个答案:

答案 0 :(得分:2)

您可能需要设置委托和数据源

productDetailHeaderView.productImagesCollectionView.register(UINib(nibName: "ProductImagesCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ProductImagesCollectionViewCell")  
productDetailHeaderView.productImagesCollectionView.delegate = self 
productDetailHeaderView.productImagesCollectionView.dataSource = self