Reputation: 63
I have a class file that is a subclass of the UICollectionViewController
class. In my cellForItemAtIndexPath
method, I am trying to set the textLabel
of the cells. However, there is no textLabel
option in the completions. This is the method so far:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as UICollectionViewCell
// Configure the cell
cell.backgroundColor = cellColor ? UIColor.blueColor() : UIColor.orangeColor()
//cell.textLabel.text = "Text"???
switch indexPath.item {
case 0...5:
cellColor = true
case 6...13:
cellColor = false
default:
cellColor = true
}
}
What can I do to add the textLabel
to the cells?
Upvotes: 2
Views: 9057
Reputation: 1976
Here is the Swift 4 way to add text to a collection view cell:
let title = UILabel(frame: CGRect(x: 0, y: 0, width: cell.bounds.size.width, height: 40))
title.textColor = UIColor.black
title.text = "T"
title.textAlignment = .center
cell.contentView.addSubview(title)
Upvotes: 2
Reputation: 5078
Unlike tableViewCell ,UICollectionViewCell doesn't have textLabel. You need to add the UILabel to cell's content view example:
var title = UILabel(frame: CGRectMake(0, 0, cell.bounds.size.width, 40))
cell.contentView.addSubview(title)
Upvotes: 6
Reputation: 2278
Use the documentation, Luke. It's under Xcode's "Help" menu.
UICollectionViews don't have textLabels - that's why you don't get a completion.
They have contentViews. You can put text in the content view though. Any UIView subclass will do. If all you want is text (no graphics), then you could use a UITextView for your content view, then assign to its "text" property:
cell.contentView.text = "Text"
However, you will want a subclass of UICollectionView that already provides the UITextViews for the contentViews.
Upvotes: 1