具有动态单元标识符的 UICollectionView

Posted

技术标签:

【中文标题】具有动态单元标识符的 UICollectionView【英文标题】:UICollectionView with dynamic Cell Identifier 【发布时间】:2015-01-07 14:00:12 【问题描述】:

我希望 UICollection 视图具有动态 CellIdentifier 像下面这样。

    NSString *strIdentifier = [NSString stringWithFormat:@"cellIdentifier%d",indexPath.row];
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:strIdentifier forIndexPath:indexPath];

我该怎么做?如果可能请帮忙!!! 谢谢

编辑

我已使用此代码注册了我的所有标识符

    //CollectionView
    self.mpCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width,  frame.size.height) collectionViewLayout:layout];
    [self.mpCollectionView setDataSource:self];
    [self.mpCollectionView setDelegate:self];
    for(int i=0;i<arrayExplorerItems.count;i++)
    
        NSString* strIdentifier = [NSString stringWithFormat:@"cellIdentifier%d",i];
        NSLog(@"registered Id:%@",strIdentifier);
        [self.mpCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:strIdentifier];
    

 and my cellForItemAtIndeaxPath is 

    UICollectionViewCell *cell;
    NSString *strIdentifier = [NSString stringWithFormat:@"cellIdentifier%d",indexPath.row];
    cell = [collectionView dequeueReusableCellWithReuseIdentifier:strIdentifier forIndexPath:indexPath];

但是给了我这个错误

无法使同类视图出队:带有标识符 cellIdentifier0 的 UICollectionElementKindCell - 必须为标识符注册一个 nib 或类或连接情节提要中的原型单元格

【问题讨论】:

您在哪里/何时执行注册代码循环? 分配collectionview后不久 我是在调用 cellForItem 之前注册 NSLog 吗? @rounak 我没有收到日志 那么你的代码没有被执行。您的控制流/逻辑有问题,而不是 UICollectionView 的问题 【参考方案1】:

这是可能的。您需要先注册所有单元格标识符。

[collectionView registerNib:forCellWithReuseIdentifier:]

[collectionView registerClass:forCellWithReuseIdentifier:]

然后您就可以轻松创建和出列所有准备好的标识符。

【讨论】:

如何注册不同的标识符?

以上是关于具有动态单元标识符的 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

动态创建命名单元

SWIFT:在具有多个部分的表视图中显示字典时,无法将具有标识符单元格错误的单元格出列

XCUITest:从具有多个单元格原型的多个单元格标识符中选择一个 CollectionView 单元格

在 ios 6 中向第二个动态单元格添加单独的标识符?

iOS - Objective-C 无法将具有标识符的单元格出列

视图中具有多个单元格标识符的自动布局 UITableViewCell