Json有多个图像,
Json有多个图片的日期,我想在tableview中显示日期和该日期的第一张图片,工作正常。
注意: 当单击tableview中的任何单元格时,在集合视图中显示该日期与所有图像,但是仅解析该日期的第一个图像,该图像仅显示在集合视图中
如何从Json解析所有图像并从tableview传递到集合视图,并将图像显示到搭配视图
这是代码......
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
}
请帮助我......!
答案 0 :(得分:0)
u can do soemthing like this
让eventImages = MediaEventData [&#34; eventImages&#34;]为? [[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