Swift:在没有 collection 视图控制器的情况下实现 collection 视图

Swift: Implementing collection view without collection view controller

我设置了一个 CollectionViewController 并且让事情运行得很好而且很直接。

class CollectionController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
    .
    .
    .
    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
        cell.myTitle.text = self.titles[indexPath.row]
        let imgName = "pic\(indexPath.row).jpg"
        cell.myImage.image = UIImage(named: imgName)

        return cell
    }
}
class CollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var myTitle: UILabel!
    @IBOutlet weak var myImage: UIImageView!
}

现在我只想用 UICollectionView 做同样的事情(不是 UICollectionViewController)。我同样实现了我的 Collection,但是当我 运行 我的应用程序没有渲染单元格时。

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
class CollectionView: UICollectionView, UICollectionViewDelegateFlowLayout {
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
        cell.myTitle.text = self.titles[indexPath.row]
        let imgName = "pic\(indexPath.row).jpg"
        cell.myImage.image = UIImage(named: imgName)

        return cell
    }
}
class CollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var myTitle: UILabel!
    @IBOutlet weak var myImage: UIImageView!
}

我是否需要在 ViewController 中执行一些初始化?我想我在这里遗漏了一些小东西:(

*我正在使用故事板,所以我的单元格等是在那里生成的,而不是通过代码生成的。

您的视图控制器是否设置为集合视图的委托和数据源?

您可以通过 collectionView.delegate = self 之类的代码或通过在视图控制器和集合视图之间按住 control 并拖动从情节提要中执行此操作。

你应该遵循这个 link: http://adoptioncurve.net/archives/2012/09/a-simple-uicollectionview-tutorial/ 这个想法是您需要注册 nib(如果将 xib 用于自定义单元格)或注册 class 自定义单元格和 cellidentifier