2013-01-14 27 views
4

我试图定义自己的自定义UICollectionViewCell实现并在UICollectionView中使用它。这是我所做的。iOS - 缺少将某个自定义UICollectionViewCell添加到UICollectionView

1-我正在使用故事板。

2-我在另一个视图中添加了一个UICollectionView,这是故事板上的一个场景。

3我将集合的datasourcedelegate指向场景的控制器。

4-我在控制器中提供了所需方法的实现。

5-我创建了一个单元格视图.h.m文件。在.h文件我做

@interface HscCellView : UICollectionViewCell

6-我创建了一个新的观点,所以我得到了一个新的画布,并在右边的相应部分我指定了我的类名(同步骤5)并提供了一个唯一的标识符。
7在控制器的场景,我在.h文件到我在拖集合视图限定的出口。

@property (nonatomic, strong) IBOutlet UICollectionView *holesCollectionView;

viewDidLoad我做

[self.holesCollectionView registerClass:[HscCellView class] forCellWithReuseIdentifier:@"cellView"]; 

请注意,cellView是我为自定义单元格xib指定的唯一标识符。

8最后,我实现

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

    return cell; 

} 

当我火起来的应用程序,我得到了一堆细胞意见(9,因为我在numberOfItemsInSection消息指定9),但他们都不是我的自定义单元格视图。他们没有尺寸,颜色或标签。我没有看到任何错误。我卡住了。

一些辅助问题。

  • 什么时候使用注册笔尖,什么时候注册类名?我已经看到了它的两种方式,但看起来你总是最终得到一个nib和一个类定义代码,这是真的吗?

  • 在步骤6中,当我在自定义单元格视图的画布中指定唯一标识时,是否意味着我不需要在viewDidLoad中注册类?

+1

检查'dequeueReusableCellWithReuseIdentifier'后的'cell'的值。它可能是零?你需要从nib或者alloc/init中加载一个。 –

+0

@ ott - hmm interesting - cell是我的类'(HscCellView *)'的一个实例。它似乎没有任何我在画布上为xib(size,bg color,label)定义的东西。 – hvgotcodes

回答

11

明白了,我想。我会尽力解释它,如果我错了,希望能得到纠正。我认为这会对其他人有所帮助。根据我提出的问题的评论,我确定我班的实例实际上正在加载。但是,xib被忽略了。这意味着,当我的课程被加载时,xib没有被使用。所以,在步骤7的问题中,我做了

UINib *nib = [UINib nibWithNibName:@"HscCellView" bundle:nil]; 
    [self.holesCollectionView registerNib:nib forCellWithReuseIdentifier:@"cellView"]; 

而不是注册类,现在事情似乎工作。

我有点好奇,为什么,因为我联系了厦门国际银行与我的自定义类,这是必要的,但我不再坚持。

+0

你的回答让我大开眼界!感谢mannn! :) –

+0

gr8答案.. !! upvoted –

相关问题