[英]Parsing multiple images in swift from JSON
傑森有多張圖片,
傑森有多個圖像的日期,我想在表視圖中顯示日期和該日期的第一個圖像,工作正常。
注意:當單擊表視圖中的任何單元格時,在集合視圖中顯示該日期和所有圖像,但是僅解析該日期的第一張圖像,而該圖像僅在集合視圖中顯示
如何從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
}
請幫助我......!
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.