2016-07-31 14 views
0

Ich habe gelernt, wie UICollection Ansicht verwenden. Ich machte einen neuen UICollectionView Controller und identifizierte die collectionview Zelle als "Cell" in der main.storyboard. Ich bekomme immer einen schwarzen Bildschirm, wenn ich auf den UICollectionView-Controller klicke (über den TapBar-Controller) Ich verwende Firebase derzeit, um Daten zu importieren/exportieren. Vielen Dank für Ihre Hilfe!Black UICollectionView

class UserCollectionViewController: UICollectionViewController { 
     var databaseRef = FIRDatabase.database().reference() 
     var usersDict = NSDictionary?() 

     var userNameArray = [String]() 
     var userImageArray = [String]() 

     override func viewDidLoad() { 
      super.viewDidLoad() 


      self.databaseRef.child("user_profile").observeEventType(.Value, withBlock :{ 
       (snapshot) in 
       self.usersDict = snapshot.value as? NSDictionary 
       for(userId,details) in self.usersDict! { 
        let img = details.objectForKey("profile_pic_small") as! String 
        let name = details.objectForKey("name") as! String 
        let firstName = name.componentsSeparatedByString(" ")[0] 
        self.userImageArray.append(img) 
        self.userNameArray.append(firstName) 
        self.collectionView?.reloadData() 
       } 


      }) 

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

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

      override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

      let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionViewCell 
      return cell 


       let imageUrl = NSURL(string: userImageArray[indexPath.row]) 
       let imageData = NSData(contentsOfURL: imageUrl!) 

       cell.userImage.image = UIImage(data: imageData!) 
       cell.userName.text = userNameArray[indexPath.row] 

       return cell 
     } 

    } 
+0

Sie legen nie eine Größe für die Zellen fest: 'sizeForItemAtIndexpath'. Außerdem hatte dein Code einen Tippfehler: "self" anstelle von "elf". Überprüfen Sie, ob Ihr 'userImageArray' Elemente enthält. – Brandon

+0

Das Bild-Array hat den URL-Wert, und ich glaube nicht, dass es einen "Elf" gibt, da ich das Programm ohne Absturz ausführen könnte. Ich habe die Zellengröße über das Storyboard erstellt, aber hat es mit der Farbe des CollectionViewControllers zu tun? –

+0

Sie stellen nur eine Frage von Ihnen dar, das grundlegende Debugging nicht durchführt. Laden und spielen Sie mit [der UIViewController-Demo-App von Apple] (https://developer.apple.com/library/prerelease/content/samplecode/CollectionView-Simple/Introduction/Intro.html). – Jeff

Antwort

0

Platz ein UIView in der Zelle (seine Einschränkungen 0,0,0,0 bezüglich Zelle gesetzt), und dann später Imageview hinzuzufügen und beschriften. Vergessen Sie auch nicht, die Delegierten und die Datenquelle anzupassen.