2017-01-03 5 views
0

UICollectionView를 사용하여 백엔드리스 데이터베이스에서 이미지를 다운로드하고 표시합니다. 어떻게이 이미지를 포함하고있는 ViewController에서 이미지를 다시 표시 할 수 있습니까? Swift3를 사용하여 My CollectionView의 행을 탭하면 ImageView가 표시됩니다.Swift3를 사용하여 백엔드 데이터베이스에서 ImageView를 다운로드 한 후 새 ViewController에 이미지를 표시하는 방법

이것은 내 CollectionView입니다.

import UIKit 
import SDWebImage 

class GallaryCollectionViewController: UICollectionViewController { 
    var GallaryArray = [TestTable]() 
    let backendless = Backendless() 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     loaddatawithquery() 
    } 

    // MARK: UICollectionViewDataSource 

    override func numberOfSections(in collectionView: UICollectionView) -> Int { 
     return 1 
    } 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return GallaryArray.count 
    } 

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

     if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? GallaryCell { 

      let ImgURL = URL(string : self.GallaryArray[(indexPath as NSIndexPath).row].ImgURL!) 
      cell.GallImag.sd_setImage(with: ImgURL) 

      cell.ShowImg = { 
       if let myimage = (cell.GallImag.image) { 
        // Error here How to complete the code ? 
       } 

      } 
      return cell 
     } 
     else { 
      let cell = GallaryCell() 
      let ImgURL = URL(string : self.GallaryArray [(indexPath as NSIndexPath).row].ImgURL) 
      cell.GallImag.sd_setImage(with: ImgURL) 
      cell.ShowImg = { 
       if let myimage = (cell.GallImag.image) { 

       } 
      } 
      return cell 
     } 
    } 

    func loaddatawithquery() {   
     let dataQuery = BackendlessDataQuery() 
     dataQuery.queryOptions.pageSize = 50 

     backendless.data.of(TestTable.ofClass()).find(dataQuery,response: {(result: BackendlessCollection?) -> Void in 

      let data = result?.getCurrentPage() 

      for obj in data! as! [TestTable] { 
       self.GallaryArray.append(obj) 
       self.collectionView?.reloadData() 
      } 

     }, error: { (fault: Fault?) -> Void in 
      let alert = UIAlertController(title: "انتباه", message:"يرجى الاتصال بالانترنيت", preferredStyle: .alert) 

      alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in }) 
      self.present(alert, animated: true){} 
     }) 
    } 

    override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {} 
} 

그리고 이것은 나의 세포입니다.

import UIKit 

    class GallaryCell: UICollectionViewCell { 

@IBOutlet weak var GallImag: UIImageView! 

var ShowImg : (() ->Void)? 


    func setSelected(_ selected: Bool, animated: Bool) { 
    setSelected(selected, animated: animated) 

    self.ShowImg!() 
    } 

} 
+0

백엔드가 무엇을 의미합니까? – Honey

+0

Backendless 데이터베이스를 사용하여 데이터를 다운로드하고 있습니다. –

답변

0

이미지를 컬렉션보기에서 올바르게로드했다고 가정합니다. 당신이 didSelectRow이라는 사용할 수있는 대리자 메서드가

...

func collectionView(_ collectionView: UICollectionView, didSelectRowAt indexPath: IndexPath) { 

    self.passingTestTable = self.GallaryArray[indexPath.row] 

    self.performSegue(withIdentifier: "segue for new view controller", sender: nil) 


} 

self.passingTestTable이 내가 그것을 어떻게, 일부는 수도 당신이 TestTable() (상단에 전 세계적으로 만드는 또 다른 속성입니다 당신이 항목들을 선택할 수 didSelectRow

당신이해야 다른 것은 수신의 ViewController에 SEGUE 준비에 (즉 self.receivedTestTable)

를 TestTable의 인스턴스를 만드는 것입니다 내부의 인스턴스를 만들 수 선출하고, 뷰 컨트롤러는 이미지 데이터에 액세스 할 수있는 세부 사항을 그 일을했고 그 화면의 이미지 뷰에 표시 할 수 있습니다 일단 새의 ViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "yourSegueName" { 

     if let controller = segue.destination as? PassedImageDetailViewController { 

      controller.receivedTestTable = self.passingTestTable 
     } 

     else { 
      print("Your segue identifier is incorrect") 
     } 
    } 
} 

에 보내.

+0

내 CollectionView에서 이미지를 두 드릴 때 표시 할 항목이 없으며 인쇄 (세그먼트 식별자가 잘못됨). –

+0

모델을 TestTable입니까? – cmyers78

+0

예, 내 모델입니다. –