为什么 UICollectionViewCell 的插座为零?

我用 Interface Builder 创建了一个自定义的 UICollectionViewCell,将它上面的视图绑定到类上,然后当我想使用一个字符串并将其设置为该字符串上的标签时,tha 标签的值为 nil。

override func viewDidLoad() {
super.viewDidLoad()


// Register cell classes
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
}


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


var cell: LeftMenuCollectionViewCell
cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell
println(cell.label) // <- this is nil, why??
cell.label.text = "asd"


return cell
}

子类单元:

class LeftMenuCollectionViewCell: UICollectionViewCell {


@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
40781 次浏览

我再次呼叫 self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")如果你正在使用一个故事板,你不会想要调用这个。它将覆盖你在你的故事板。

如果您仍然有问题,请检查 reuseIdentifier是否是 storyboard中的 dequeueReusableCellWithReuseIdentifier中的 还有中的 一样

我有一个类似的问题,但我的错误是,我没有委托 CollectionViewCell 能够更改标签文本。.

只要删除这一行:

self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")

如果您正在使用 xib,请确保您已经将这行代码添加到了 viewdiload 中。

目标丙:

[self.collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellWithReuseIdentifier:@"MyCellIdentifier"];

斯威夫特:

collectionView.register(UINib(nibName:"MyCell", bundle: nil), forCellWithReuseIdentifier:"MyCellIdentifier")

必须登记那个小子!

collectionView.register(UINib(nibName: "CustomCell", bundle: nil), forCellWithReuseIdentifier: "CustomCellId")

看起来有两种注册方式而我第一种用错了。 我有一个自定义的 xib 视图,所以注册了第二个选项,我们有数据!

1:

collectionView?.register(YourItemClassName.self, forCellWithReuseIdentifier: "yourIdentifier")

2:

collectionView?.register(UINib(nibName: "YourItemClassName", bundle: nil), forCellWithReuseIdentifier: "yourIdentifier")

我认为最好的解决方案是直接从故事板中使用,在故事板中添加一个 CollectionView,作为替代,您需要从故事板中的 CollectionView中删除一个 CollectionViewCell,并使用以下命令注册一个单元格:

Register (UINib (nibName: “ YourItemClassName”,bundle: nil) ,forCellWithReuseIdentifier: “ yourIdentifier”)

你没有注册你的手机,

fileprivate let yourIdentifier = ""yourIdentifier"
super.viewDidLoad() {

//这里需要注册单元格 Register (NameOfYourClass.self,forCellWithReuseIdentifier: “ yourIdentifier”) }