UICollectionView无法显示自定义的单元格内容

时间:2015-12-28 02:31:58

标签: ios swift uicollectionview uicollectionviewcell

我尝试使用UICollectionView创建一个虚拟照片应用。我的Xcode版本是7.2和Swift版本2.1.1。我按照Storyboard

中的教程使用http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1来构建UI部分

在Swift 2.0中, UICollectionViewDataSource 继承自 UICollectionViewController ,我们不需要显式声明这些协议。我为DataSource实现了必需的覆盖方法,并在 UICollectionViewController 中的 viewDidLoad()中注册了自定义单元格。我在我的单元格中放置了一个测试标签来检查它是否有效。不幸的是,在我启动应用程序后,标签永远不会出现。我在下面附上我的一些代码作为参考:

UICollectionViewController

class VacationsCollectionViewController: UICollectionViewController {

    private let reuseIdentifier = "VacationCell"

    override func viewDidLoad() {
        super.viewDidLoad()
        self.collectionView!.registerClass(VacationsCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
    }

    // MARK: UICollectionViewDataSource

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of items
        return 1
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! VacationsCollectionViewCell

        // Configure the cell
        cell.backgroundColor = UIColor.blueColor()
        cell.CellText.text = "Show me the money"

        return cell
    }
}

UICollectionViewCell

class VacationsCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var CellText: UILabel!
}

知道为什么标签永远不会出现在我的虚拟应用程序中?

1 个答案:

答案 0 :(得分:0)

看起来你拥有所需的一切。问题可能出在你的故事板上。为了安全起见,请在标签上添加约束,以便它能够正确显示。然后,向集合视图控制器添加扩展,并确保大小允许标签也显示。这至少对我有用,而且我确实处于你的确切状况。

extension OfficesCollectionViewController: UICollectionViewDelegateFlowLayout{
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSize(width: 200, height: 200)
    }
}