简体   繁体   中英

Parsing multiple images in swift from JSON

Json has multiple images,

img1

Json has date with multiple images, I want show Date and first image of that Date in tableview, working fine.

img2

Note : when click any cell in tableview, display that Date with all images in collection view, But am parsing only first image of that Date,that image only showing in collection view

how to parse all images from Json and pass to collection view from tableview, and display images into collocation view

img3

this is the code ...

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)




    }

collection view Code :

    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


    }

pls help me......!

  u can do soemthing like this 

let eventImages = MediaEventData["eventImages"] as? [[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

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

Your doing like this Means Your are slecting a particular cell and that index your are passing to NextVC.

if you want to show all images You should pass complete array to nextvc

You should declare a array of same type Mediainfo array in Next VC and do like

  EX: imageController.array = Mediainfo 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM