我已经创建了一个UIcollectionView和一个包含一些字符串的数组 @[@"Item One", "Item Two", @"Item Three"];
在TableView中,我会这样做:
NSString *object = self.titlesArray[indexPath.row];
cell.textLabel.text = object;
但我确实无法弄清楚如何为UIcollectionView中的项目做到这一点。
我已经创建了一个UIcollectionView和一个包含一些字符串的数组 @[@"Item One", "Item Two", @"Item Three"];
在TableView中,我会这样做:
NSString *object = self.titlesArray[indexPath.row];
cell.textLabel.text = object;
UICollectionViewCell
没有默认的单元格样式。您需要创建一个自定义的 UICollectionViewCell
并在其中添加一个 UILabel
。
UICollectionViewCell
没有像UITableviewCell
那样的默认textLabel
,您需要根据需要创建自定义UICollectionViewCell
。
您可以查看这个教程来学习如何创建自定义集合视图单元格。
Swift 4.2
我来这里是因为在Swift中遇到了同样的问题,但我使用了以下方法进行修复,希望能对你有所帮助:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath)
let title = UILabel(frame: CGRect(x: 0, y: 0, width: cell.bounds.size.width, height: 50))
title.text = "Some random text"
title.font = UIFont(name: "AvenirNext-Bold", size: 15)
title.textAlignment = .center
cell.contentView.addSubview(title)
return cell
}
不要忘记注册单元格:
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellId")
var content = cell.defaultContentConfiguration()
// Configure content.
content.text = "Hello"
cell.contentConfiguration = content
UICollectionViewCell
子类来保存cell Label outlet。
- 让Collection View Cell使用该类。
- 在ViewController中实现UICollectionViewDataSource
和UICollectionViewDelegate
及其方法。
- 连接所有outlets。
- 使用数组或其他数据源中的字符串来填充单元格。和其他人已经发表的一样,存在一个类型为UILabel
的属性。如果您不了解类,请始终按下CMD并选择您正在使用的类。在UICollectionView
的情况下,您会发现没有定义属性(Foundation
中的UICollectionViewCell
类):
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionViewCell : UICollectionReusableView
@property (nonatomic, readonly) UIView *contentView; // add custom subviews to the cell's contentView
// Cells become highlighted when the user touches them.
// The selected state is toggled when the user lifts up from a highlighted cell.
// Override these methods to provide custom UI for a selected or highlighted state.
// The collection view may call the setters inside an animation block.
@property (nonatomic, getter=isSelected) BOOL selected;
@property (nonatomic, getter=isHighlighted) BOOL highlighted;
// The background view is a subview behind all other views.
// If selectedBackgroundView is different than backgroundView, it will be placed above the background view and animated in on selection.
@property (nonatomic, retain) UIView *backgroundView;
@property (nonatomic, retain) UIView *selectedBackgroundView;
@end