3

我有一个带有 UIViewController 的应用程序,其中有一个 UICollectionView IBOutlet。

MyCustomCell 插座已连接 MyCustomCell 重用 ID MyCustomCell 类标识

UICollectionView 中的单元格是 MyCustomCell 并且有这个方法设置它的 UILabel:

-(void)setCellLabel:(NSString *)value{
    NSLog(@"settinglabel");
    cellLabel.text = @"hardcode"; //added for testing purposes
}

该单元格具有将其标识为情节提要中的 MyCustomCell 的属性 Class type 及其出队标识符。UIViewController 采用数据源和委托协议。IBOutlet UILabel 的 cellLabel 出口连接到情节提要。这些方法定义为:

- (void)viewDidLoad{
    [super viewDidLoad];
    self.restNames = @[@"Orange",@"Naranja",@"Narnia"];

    [self.collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier:@"MyCustomCellID"];

}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    NSLog(@"%d",[self.restNames count]);
    return [self.restNames count];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    MyCustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];


    [cell setCellLabel:@"hi"];
    NSLog(@"fitsname %@",[self.restNames objectAtIndex:indexPath.row]);


    return cell;
}

我在我的表格视图中绘制了三个单元格,对应于我的数组中的 3 个对象。该数组仅包含我由 objectAtIndexPath 直接设置的字符串对象,但我决定将其直接设置为 @"hi",因为它不起作用。我什至将 setCellLabel 方法中使用的值更改为硬编码值,并且在每个单元格中只获取“标签”默认字符串。

为什么没有正确设置 cellLabel?

4

3 回答 3

5

您是否在界面生成器中设置了 cellLabel 插座?

您的单元格的 .h 文件中应该有这样的内容:

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

然后稍后你真的只需要这样做:

cell.cellLabel.text = @"";
于 2013-07-30T21:48:46.693 回答
5

当您使用 Storyboard 时,默认模板是错误的,因为它使用了行

[self.collectionView registerClass:[UICollectionView class] forCellWithReuseIdentifier:CellIdentifier];

但是故事板已经注册了它。所以基本上这就是你必须做的创建一个基于故事板的自定义UICollectionView

  1. 创建你的UICollectionViewController子类
  2. 单击并拖动 aUICollectionViewController到情节提要并根据需要更改配置
  3. 创建一个UICollectionViewCell子类
  4. 在情节提要中设置单元类,设置它的重用标识符 ctrl-drag 所需的插座
  5. 去除那个[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier: CellIdentifier];
  6. UICollectionView在子类中设置静态重用标识符
于 2014-07-04T07:26:48.317 回答
0

您可能忘记告诉您UICollectionView应该使用哪个类来创建单元格。这是通过以下代码行完成的:

[self.collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier: CellIdentifier];

您可以在控制器的 viewDidLoad 末尾设置它。

于 2013-07-30T21:47:59.210 回答