2016-04-28 4 views
0

Ich habe eine einfache collectionView erstellt und die Zellen so eingestellt, dass eine Vorschau des Bildschirms angezeigt wird, in den jede Zelle beim Klicken wechselt. Das alles hat gut funktioniert, und deshalb arbeite ich daran, jedem Abschnitt Header hinzuzufügen.Swift CollectionView wurde nach dem Hinzufügen des Abschnittsheaders nicht mehr angezeigt

aber hier ist das Problem ...

Wenn ich die Abschnitte zum Code hinzugefügt verursachte es die Collection zu verschwinden (oder zumindest nicht irgendetwas anderes außer einem weißen Bildschirm zeigen)

Blank Screen

Hier ist der Code I (oder geändert) hinzugefügt, lass es mich wissen, wenn es nicht genug von dem Code geschrieben ist, und ich werde mehr schreiben ...

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { 

     let sectionHeaderView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "SectionHeader", forIndexPath: indexPath) as! SectionHeaderView 
     if let title = papersDataSource.titleForSectionAtIndexPath(indexPath) { 
      sectionHeaderView.title = title 
     } 
     return sectionHeaderView 
    } 

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return papersDataSource.numberOfSections 
    } 

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return papersDataSource.numberOfPapersInSection(section) 
    } 

Und ich eine Unterklasse von UICollectionReusableView oben, die den folgenden Code hat ...

import UIKit 

class SectionHeaderView: UICollectionReusableView { 

    @IBOutlet weak var titleLabel: UILabel! 

    var title: String? { 
     didSet { 
      titleLabel.text = title 
     } 
    } 
} 

Alles kompiliert gut, aber völlig leer erscheint.

Irgendwelche Gedanken?

+0

den Apfel docs Lese, es scheint, dass Sie diese 'UICollectionViewLayout'-Methode überschrieben haben:' layoutAttributesForSupplementaryViewOfKind: atIndexPath: '. Ich denke, die Methode sollte zurückkehren: '.SupplementaryView' – alaphao

Antwort

0

Nachdem ich festgestellt hatte, dass der oben angegebene Code korrekt war, entschied ich mich, die dataSource-Datei, in der alle Daten eingerichtet und geladen wurden, besser zu betrachten. Bei der Jagd um fand ich, was das Problem verursacht wurde, und es war das Verfahren, das die Daten auf Disk geladen ...

private func loadPapersFromDisk() -> [Paper] { 
    sections.removeAll(keepCapacity: false) 
    if let path = NSBundle.mainBundle().pathForResource("Papers", ofType: "plist") { 
     if let dictArray = NSArray(contentsOfFile: path) { 
     var papers: [Paper] = [] 
     for item in dictArray { 
      if let dict = item as? NSDictionary { 
      let caption = dict["caption"] as! String 
      let imageName = dict["imageName"] as! String 
      let section = dict["section"] as! String 
      let index = dict["index"] as! Int 
      let paper = Paper(caption: caption, imageName: imageName, section: section, index: index) 
      if !sections.contains(section) { 
       sections.append(section) 
      } 
      papers.append(paper) 
      } 
     } 
     return papers 
     } 
    } 
    return [] 
    } 

Insbesondere das Problem zu einem Abschnitt in den beigefügten Papieren war. Die Abschnitte ausgepackt werden mußten, bevor es sah aus wie ...

if sections.contains(section) { 
    sections.append(section) 
}