0

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

然而,问题来了……

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

黑屏

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

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

一切编译正常,但显示完全空白。

有什么想法吗?

4

1 回答 1

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)
}
于 2016-04-28T03:48:32.103 回答