Ios Swift:如何从UIButton CollectionView单元格调用json id

Ios Swift:如何从UIButton CollectionView单元格调用json id,ios,json,swift,uicollectionviewcell,Ios,Json,Swift,Uicollectionviewcell,我在UICollectionViewCell中有一个UIButton。希望从此单元格获取json id。我完美地解析UICollectionViewController中的json数据。当单击UICollectionViewCell中的UIButton时,我始终在末尾id处遇到的问题 这是我的代码 Json { "error": false, "product_sellers": [ { "id": 5, "store_name": "ahmedstore

我在UICollectionViewCell中有一个UIButton。希望从此单元格获取json id。我完美地解析UICollectionViewController中的json数据。当单击UICollectionViewCell中的UIButton时,我始终在末尾id处遇到的问题

这是我的代码

Json

{
  "error": false,
  "product_sellers": [
    {
      "id": 5,
      "store_name": "ahmedstore",
      "photo": "user_12-06-2017-12-32-56.png",
      "is_favorite": 0
    },
    {
      "id": 122,
      "store_name": "aitldev6",
      "photo": null,
      "is_favorite": 0
    },
    {
      "id": 123,
      "store_name": "aitlmanager",
      "photo": "user_2017-08-31-10-06-am (16).jpg",
      "is_favorite": 0
    },
    {
      "id": 135,
      "store_name": "ajanta library",
      "photo": "user_2017-08-19-7-16-am23931.png",
      "is_favorite": 0
    },
CollectionViewController

类ProductStoreCollectionViewController:UICollectionViewController、UICollectionViewDelegateFlowLayout{

override func viewDidLoad() {

    super.viewDidLoad()


    let url = URL(string: "..........")


    URLSession.shared.dataTask(with:url!) { (urlContent, response, error) in

        if error != nil {
            print(error ?? 0)
        }
        else {
            do {

                let items = json["product_sellers"] as? [[String: Any]] ?? []

                self.arrStore = [Store]()

                for item in items {


                    let oStore = Store()

                    oStore.id = item["id"] as? Int
                    oStore.image = item["photo"] as? String
                    oStore.store_name = item["store_name"] as? String
                    oStore.is_favorite = item["is_favorite"] as? Int

                    ProductStoreId.store_id = oStore.id!

                    self.arrStore.append(oStore)

                }

            } catch let error as NSError {
                print(error)
            }

            DispatchQueue.main.async(execute: {

                self.collectionView?.reloadData()
            })

        }



    })
}

UICollectionViewCell

class StoreCollectionViewCell: BaseCell{



    let heartBtn: UIButton = {

        let btn = UIButton()
        btn.setImage(UIImage(named: "heart_white_copy"), for: .normal)

        btn.translatesAutoresizingMaskIntoConstraints = false
        return btn
    }()

    var sellerId2: Int = 1


    func heartBtnClick(){

        print("box Btn click")


        self.sellerId2 = ProductStoreId.store_id


        print("add to favoriteStore\(self.sellerId2)")


    }


    override func setupCell() {

        heartBtn.addTarget(self, action: #selector(heartBtnClick), for: .touchUpInside)
        addSubview(heartBtn)




    }

}

这是因为您的
ProductStoreId.store\id
在解析时存储了最后一个id

您需要在数据源方法中分配id

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // Your code
    let store = self.arrStore[indexPath.row] // Please correct it if not
    cell.sellerId2 = store.id
}
然后在
StoreCollectionViewCell
类中

func heartBtnClick(){
    print("box Btn click")
    //We don't need the below line
    //self.sellerId2 = ProductStoreId.store_id
    print("add to favoriteStore\(self.sellerId2)")
}

这是因为您的
ProductStoreId.store\id
在解析时存储了最后一个id

您需要在数据源方法中分配id

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // Your code
    let store = self.arrStore[indexPath.row] // Please correct it if not
    cell.sellerId2 = store.id
}
然后在
StoreCollectionViewCell
类中

func heartBtnClick(){
    print("box Btn click")
    //We don't need the below line
    //self.sellerId2 = ProductStoreId.store_id
    print("add to favoriteStore\(self.sellerId2)")
}

请正确添加代码并同时添加collectionview方法。请正确添加代码并同时添加collectionview方法。能否帮助我回答此问题。我想通过点击按钮来检测tableview单元格中的一个按钮。这里是链接,你能帮我回答这个问题吗。我想通过点击按钮来检测tableview单元格中的一个按钮。这里是链接