簡體   English   中英

從JSON快速解析多個圖像

[英]Parsing multiple images in swift from JSON

傑森有多張圖片,

IMG1

傑森有多個圖像的日期,我想在表視圖中顯示日期和該日期的第一個圖像,工作正常。

IMG2

注意:當單擊表視圖中的任何單元格時,在集合視圖中顯示該日期和所有圖像,但是僅解析該日期的第一張圖像,而該圖像僅在集合視圖中顯示

如何從Json解析所有圖像並從tableview傳遞到集合視圖,並將圖像顯示到並置視圖

IMG3

這是代碼...

json Code    

                    if errorCode == "0" {


                       if let Media_list = jsonData["events"] as? [Any] {

                        self.Mediainfo.removeAll()


                        for i in 0 ..< Media_list.count {

                            if let MediaEventData = Media_list[i] as? [String: Any] {

                                var eventImages = MediaEventData["eventImages"] as? [[String: Any]]

                                if (eventImages?.count)! > 0 {

                                       let bannerImage = eventImages?[0]["bannerImage"] as? String

                                       print(bannerImage as Any)

                                        self.imageUrl = self.url+"/images/events/" + String(describing: bannerImage!)
                                        self.Mediainfo.append(MediaEvent(
                                        eventId: MediaEventData["eventId"]as?String,
                                        date: MediaEventData["date"]as?String,
                                        eventname: MediaEventData["eventName"]as?String,
                                        bannerImages: self.imageUrl


                                    )
                                )

                                  }
                            }






    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "Media", for: indexPath)as! MediaCustomTableViewCell

        let  row = indexPath.row

        let media = Mediainfo[row] as MediaEvent

        cell.DisplayDate.text = media.date

        cell.DisplayName.text = media.eventName

        cell.selectionStyle = .none

        cell.DisplayImage.downloadImageFrom(link:media.bannerImages, contentMode: UIViewContentMode.scaleAspectFit)

        return cell
    }


    override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }


    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    {

        let media = Mediainfo[(indexPath.row)] as MediaEvent


        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabBarController = storyboard.instantiateViewController(withIdentifier: "IMAGEVID") as! UITabBarController

        if let viewControllers = tabBarController.viewControllers,
            let imageController = viewControllers.first as? ImagesCollectionViewController {
            imageController.RecivedData1 = media.bannerImages
        }

        navigationController?.pushViewController(tabBarController, animated: true)




    }

集合視圖代碼:

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

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! ImageCollectionViewCell

        cell.ImageviewCell.downloadImageFrom(link:nameofImages[indexPath.row], contentMode: UIViewContentMode.scaleAspectFit)


        return cell


    }

請幫助我......!

  u can do soemthing like this 

讓eventImages = MediaEventData [“ eventImages”]作為? [[String:Any]]

 if (eventImages?.count)! > 0 { for i in 0...eventImages.count{ let bannerImage = eventImages?[i]["bannerImage"] as? String self.imageUrl = self.url+"/images/events/" + String(describing: bannerImage!) self.Mediainfo.append(bannerImage) // or like u did u can append to array self.Mediainfo.append(MediaEvent( eventId: MediaEventData["eventId"]as?String, date: MediaEventData["date"]as?String, eventname: MediaEventData["eventName"]as?String, bannerImages: self.imageUrl ) } } 
In didselect

讓media = Mediainfo [(indexPath.row)]作為MediaEvent imageController.RecivedData1 = media.bannerImages

這樣的操作意味着您正在選擇一個特定的單元格,並且該索引正在傳遞給NextVC。

如果要顯示所有圖像,則應將完整的數組傳遞給nextvc

您應該在Next VC中聲明相同類型的Mediainfo數組,並執行以下操作

  EX: imageController.array = Mediainfo 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM