将参数从CollectionViewController传递到CollectionViewCell

时间:2018-05-21 18:37:15

标签: ios swift uicollectionview

我想点击一个类别后显示产品列表。我将类别id(rowid)发送到ProductListController,我可以访问rowid。

我想将rowid发送到我的ProductListCell类,并将rowid传递给setupViews()中的fetchProduct(rowid:Int)。

到目前为止,我已经尝试过notificationCenter和协议类,我可以找到我正在寻找的结果。

ProductCellList.swift

class ProductListCell : BaseCell ,UICollectionViewDataSource,  UICollectionViewDelegate,UICollectionViewDelegateFlowLayout
{
    let cellId = "cellId"
    var products = [Product]()
    weak var delegate: ProductCellDelegate?

    override func setupViews() {
        super.setupViews()

        var receivedRowId = getRowId() // here is the problem - i can't get the rowid from productlistcontroller

        fetchProduct(rowId: receivedRowId)

        addSubview(collectionView)
        addConstraintsWithFormat(format: "H:|[v0]|", views: collectionView)
        addConstraintsWithFormat(format: "V:|[v0]|", views: collectionView)

        collectionView.register(ProductCell.self, forCellWithReuseIdentifier: cellId)
    }

    func fetchProducts(rowId: Int){

        ApiServiceProduct.sharedInstance.fetchProductsList(rowId: rowId) { (products:[Product]) in
            self.products = products
            self.collectionView.reloadData()
        }
    }

1 个答案:

答案 0 :(得分:0)

我不太关注你的问题,但是UICollectionView通过UICollectionViewDelegatefunc collectionView(UICollectionView, didSelectItemAt: IndexPath),这可能是执行此任务的理想场所,特别是如果rowid和类别是相同。