【问题标题】:Parsing multiple images in swift from JSON从 JSON 中快速解析多个图像
【发布时间】:2017-08-09 19:21:06
【问题描述】:

Json 有多个图片,

img1

Json 有多个图像的日期,我想在表格视图中显示日期和该日期的第一张图像,工作正常。

img2

注意: 当单击表格视图中的任何单元格时,在集合视图中显示该日期以及所有图像,但仅解析该日期的第一张图像,该图像仅显示在集合视图中

如何解析Json中的所有图像并从tableview传递到collection view,并将图像显示到collocation view中

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


    }

请帮帮我……!

【问题讨论】:

  • 看起来您没有发布所有代码。
  • 为了更好地理解我的问题抱歉...

标签: ios json swift uitableview uicollectionview


【解决方案1】:
 u can do soemthing like this

让 eventImages = MediaEventData["eventImages"] as? [[字符串:任意]]

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 的索引。

如果你想显示所有图像你应该将完整的数组传递给 下一个vc

你应该在 Next VC 中声明一个相同类型的 Mediainfo 数组 并且喜欢

    EX:  imageController.array = Mediainfo

【讨论】:

  • 但是让bannerImage = eventImages?[0]["bannerImage"] 为?字符串包含单个图像。我只能将单个图像附加到 meidainfo 数组
  • @naga 你需要将所有图像都排列起来吗?运行 for 循环并添加图片
  • imageController.array = Mediainfo 这显示了中值信息中的所有图像我的目标是前 10/08/2017 有 2 张图像,但我只显示当天的第一张图像,但下一个集合必须显示 10 /08/2017 收藏视图中的 2 张图片
  • 无法转换“字符串”类型的值?到 self.Mediainfo.append(bannerImage) 行的预期参数类型“MediaEvent”
猜你喜欢
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多