swift 致命错误中的自定义 CollectionViewCell

custom CollectionViewCell in swift fatal error

我在做一个基于 xib 的 swift 项目,我在我的视图控制器中创建了一个集合视图,添加了它的委托,使用默认的 collectionViewCell

一切都很好

问题出在我创建自定义单元格时 我在 xib

中以正确的方式添加了重用标识符

然后在视图控制器的加载中添加这些行

collectionViewCarType.delegate = self;
collectionViewCarType.dataSource = self;
collectionViewCarType.registerClass(MainScreenCollectionViewCell.self, forCellWithReuseIdentifier: "MainScreenCollectionViewCell");

并且我添加了断点它不会在这里崩溃

然后在:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell

我添加了这些行:

var cell = collectionView.dequeueReusableCellWithReuseIdentifier("MainScreenCollectionViewCell", forIndexPath: indexPath) as! MainScreenCollectionViewCell
cell.backgroundColor = UIColor.redColor()
cell.labelOfTime.text = "10 mins"
cell.labelOfType.text = "Mini"

return cell

应用程序在达到 cell.labelOfTime.text 时崩溃

当我删除标签 2 行时,它可以很好地为单元格着色

我还使 2 标签和集合视图变得强大,但它也崩溃了

我删除了 xib 并用不同的名称创建它并尝试使用它,但我也遇到了同样的错误

我是 swift 的新手,我不知道我还能做些什么

您的问题是您创建了一个 .xib,但您正在注册一个 class:

let nib = UINib(nibName: view, bundle: nil)
collectionViewCarType.registerNib(nib, forCellWithReuseIdentifier: "MainScreenCollectionViewCell")

这意味着当它加载您的 class 时,它只是被初始化,它不会从 .xib 加载它,所以您的插座永远不会被设置。

您可以在 StoryBoard 中做很多这样的事情,也许它会有所帮助。 首先,您可以通过 storyBoard 连接委托和数据源 - 只需从集合视图中按住 ctrl 键拖动,这样您就不需要自己编写(但这不是这里的问题)。

第二件事是你不需要创建 nib 文件,也不需要注册单元格的 class。

  1. 添加新的 class 文件 - 自定义 UICollectionViewCell class - 应如下所示:
class customCell :UICollection {//implementation goes here}
  1. collectionViewCell 拖到您的 collectionView

    1. 在自定义 class 部分的身份检查器中,将单元格的 class 更改为您刚刚创建的 class 的名称。

    2. 在属性检查器中添加标识符

    3. 将您想要的任何内容添加到单元格(图像、标签等)并将它们连接到您创建的 class。

它会让事情变得更容易,无论如何这里有一些参考资料可能会有所帮助。

http://www.ioscreator.com/tutorials/custom-collection-view-cell-tutorial-ios8-swift http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1