0

所以似乎-addSubview两次添加UILabelUICollectionReusableView

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {

        UICollectionReusableView *reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];

        if (reusableview==nil) {
            reusableview=[[UICollectionReusableView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        }

        UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        label.text=[NSString stringWithFormat:@"Recipe Group #%i", indexPath.section + 1];
        [reusableview addSubview:label];
        return reusableview;
    }
    return nil;
}

此代码不起作用:

if (reusableview==nil) {
   reusableview=[[UICollectionReusableView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
}

所以可重用的视图永远不会是零。

4

1 回答 1

0

如果要自定义 UICollectionReusableView,则需要像对 UICollectionViewCell 一样对它进行子类化。否则,您基本上是在每次重用可重用视图时添加一个标签(例如在滚动或 reloadData 上)。

不久前我发了一个帖子:UICollectionView 将图像添加到单元格

只需为您的可重用视图做同样的事情,如果它解决了您的问题,请告诉我。

于 2015-07-03T11:31:14.127 回答