![](/img/trans.png)
[英]array of images from json in to the CollectionView Custom cell swift4
[英]Swift: how to call json id from UIButton CollectionView cell
我在UICollectionViewCell中有一個UIButton。 想要從此單元格獲取json id。 我完美地解析UICollectionViewController中的json數據。 單擊UICollectionViewCell中的UIButton時,我一直都在結尾ID處出現的問題。
這是我的代碼
傑森
{
"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)")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.