添加节标题后,Swift CollectionView停止显示

时间:2016-04-28 00:57:55

标签: swift header uicollectionview uicollectionreusableview

我创建了一个简单的collectionView并设置单元格以显示每个单元格在单击时进入的屏幕预览。这一切都很好,所以我正在向每个部分添加标题。

然而,这是问题......

当我将这些部分添加到代码中时,它导致collectionView消失(或者至少它除了显示白屏外没有显示任何其他内容)

Blank Screen

这是我添加(或修改)的代码,如果没有足够的代码发布,请告诉我,我会发布更多...

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)
    }

我设置了一个UICollectionReusableView的子类,其中包含以下代码......

import UIKit

class SectionHeaderView: UICollectionReusableView {

    @IBOutlet weak var titleLabel: UILabel!

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

一切都很好,但显示完全空白。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在确定上面发布的所有代码都是正确的之后,我决定更好地查看dataSource文件,其中设置并加载了所有数据。在四处寻找时,我发现导致问题的是什么,这是将数据加载到光盘的方法......

  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 []
  }

具体来说,问题出在附录中。在看起来像......之前,这些部分必须打开包装。

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