UICollectionView的不需要的行为

时间:2015-02-02 10:54:24

标签: ios xcode6 uicollectionview uicollectionviewcell

我正在尝试在UICollection视图中显示一些文字。但我得到了错误

  

属性单元格标签不适用于类型的对象   UICOllectionViewCell

.h文件

#import <UIKit/UIKit.h>

 @interface ViewController :     UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>


  @end

.m文件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];


// Do any additional setup after loading the view, typically from a nib.
 }

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 10;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier  =@"cell";
UICollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

cell.cellLabel.text = @"Sample Text";
return cell;
}
@end

我已经设置了UICollectionView的delgate方法。 Here is the Screenshot of Error

2 个答案:

答案 0 :(得分:0)

您是否在界面构建器中设置了cellLabel插座?

如果否,那就制作一个。

你的单元格.h文件中应该有这样的东西:

@property (weak, nonatomic) IBOutlet UILabel *cellLabel;

然后你真的需要这样做:

cell.cellLabel.text = @"";

你也可以制作这样的标签,

UILabel *cellLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, cell.bounds.size.width, 40)]; //custom size

[cell.contentView addSubview:cellLabel];

并像

一样使用它
cell.cellLabel.text = @"Sample Text";

UICollectionView上有教程,您可以查看this link.

答案 1 :(得分:0)

首先请注意,即使您有自定义单元格,也要将集合视图单元格转换为自定义单元格:

UICollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

在编译时,编译器不知道您正在尝试使用自定义单元格,因此该属性不存在。

请确保你:

  • 创建了具有cellLabel属性的自定义UICollectionViewCell

  • 您是通过代码注册了您的单元格,或者您在Interface Builder中使用了您的单元格标识符

  • 您导入了单元格并在cellForItemAtIndexPath中使用它