2017-09-18 9 views
1

Wie richtig ich das Array geladen werden (Bild, image2, image3) Bilder aus meiner Klasse Modell in collectionCell?Verwendung Klasse/Struct in collectionCell innerhalb collectionCell für zukünftige Passdaten

Die Klasse selbst Modell wie folgt aussieht:

class Model { 

    var image: String 
    var image2: String 
    var image3: String 
    var images: [String] = [] 
    var images2: [String] = [] 
    var images3: [String] = [] 
    var ref: FIRDatabaseReference! 

    init(snapshot: FIRDataSnapshot) { 
     ref = snapshot.ref 
     let value = snapshot.value as! NSDictionary 
     let snap = value["hall1"] as? NSDictionary 
     let snap2 = value["hall2"] as? NSDictionary 
     let snap3 = value["hall3"] as? NSDictionary 
     image = snap?["qwerty"] as? String ?? "" 
     image2 = snap2?["qwerty"] as? String ?? "" 
     image3 = snap3?["qwerty"] as? String ?? "" 
     if let post1 = snap as? [String: AnyObject] { 
      for (_, value) in post1["images"] as! [String: AnyObject] { 
       self.images.append(value as! String) 
      } 
     } 
     if let post2 = snap2 as? [String: AnyObject] { 
      for (_, value) in post2["images"] as! [String: AnyObject] { 
       self.images2.append(value as! String) 
      } 
     } 
     if let post3 = snap3 as? [String: AnyObject] { 
      for (_, value) in post3["images"] as! [String: AnyObject] { 
       self.images3.append(value as! String) 
      } 
     } 
    } 
} 

In meinem collectionCell nur das erste Bild geladen, verstehe ich im Grunde, warum, wie ich es verstehe auf die Tatsache zurückzuführen ist, dass sd_setImage zeigt keine Arrays an (korrigiere mich, wenn ich falsch liege), aber wie ich es beheben kann, kann nicht herausfinden.

-Code des collectionCell:

class CollectionViewCell11: UICollectionViewCell, UICollectionViewDelegate, UICollectionViewDataSource { 

    var imagess: [Model] = [] 
    @IBOutlet weak var collectionView: UICollectionView! 

    var vc1: ViewController? 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     collectionView.delegate = self 
     collectionView.dataSource = self 
    } 

    func collectionView(_ collectionView: UICollectionView, numb erOfItemsInSection section: Int) -> Int { 
     return imagess.count 
} 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell12 
     cell.imageView.sd_setImage(with: URL(string: imagess[indexPath.item].image)) 

     return cell 
    } 
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
     if vc1 != nil { 

      let vc2 = vc1!.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as! ViewController2 

      vc2.photo = [imagess[indexPath.item]] 

      let backItem = UIBarButtonItem() 
      backItem.title = "" 
      vc1!.navigationItem.backBarButtonItem = backItem 

      vc1!.navigationController?.pushViewController(vc2, animated: true) 
     } 
    } 
} 

Um Ich brauche zu verwenden nur die Klasse Modell, weil sie eine andere Anordnung von Bildern enthalten, die ich den nächsten Controller für Scroll-Bild anzuzeigen, zu planen.

Antwort

0

Wenn Ihr nächster ViewController ein Kind dieser Zelle ist, können Sie das Array auf diese Weise an ihn übergeben.

Sie schreiben diese in der viewDidLoad() des nächsten Viewcontroller:

var newImagesArray: [Model] = [] 
if let parentVC = self.parent as? CollectionViewCell11 { 
    newImagesArray = parentVC.imagess 
} 
+0

was von ** self.parent gemeint ** – onpro

+0

in diesem Fall die Eltern würde CollectionViewCell11, so dass Sie selbst nennen würde?. Übergeordnetes Element von Ihrem neuen ViewController, um über CollectionViewCell11 auf das Array zuzugreifen –

Verwandte Themen