显示具有多个不同UICollectionViewCells类型的UICollectionView

时间:2014-08-31 19:47:45

标签: ios objective-c uicollectionview uicollectionviewcell

我正在尝试创建一个具有不同UICollectionViewCells的UICollectionView 我有几个项目,一个有3个UILabel和UIIMageView,另外有2个UIImageViews和6个UILables等。

我正在尝试初始化单元格并为每个特定场景添加视图,但这似乎不起作用。 我正在检查cell == nil然后添加视图,(我确实进入'if'语句)。

如果我在if语句中使用'addSubView',它什么都不做

ResumeFeedCell *cell= (ResumeFeedCell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"ResumeFeedCell" forIndexPath:indexPath];
if (!cell) {
    //init views in the cell and add them
    UIImageView *mediaImage =[[UIImageView alloc] initWithFrame:CGRectMake(0 , 0,530, 560)];
    mediaImage.tag = 12;
    [cell.contentView addSubview:mediaImage];

    UIImageView *typeImage = [[UIImageView alloc] initWithFrame:CGRectMake(0 , 0,150, 150)];
    typeImage.tag = 11;
    [cell.contentView addSubview:typeImage];

    UILabel *textLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 530, 560)];
    textLable.tag = 10;
    [cell.contentView addSubview:textLable];

}

UIImageView *mediaImage = (UIImageView*)[cell.contentView viewWithTag:12];
UIImageView *typeImage = (UIImageView*)[cell.contentView viewWithTag:11];
UILabel *textLable = (UILabel*)[cell.contentView viewWithTag:10];

textLable.text = _bio;
textLable.textAlignment = NSTextAlignmentCenter;
textLable.numberOfLines = 0;
textLable.tag = 10;
textLable.adjustsFontSizeToFitWidth=YES;
textLable.minimumScaleFactor=0.5;

[mediaImage setImageWithURL:[NSURL URLWithString:getImageUrlwithIdAndSize([[[_datasource objectAtIndex:indexPath.row] objectForKey:@"media"] objectAtIndex:0], 1)]];

我尝试了另一种方式,如:

UIImageView *mediaImage = (UIImageView*)[cell.contentView viewWithTag:12];
if(!mediaImage)mediaImage = [[UIImageView alloc] initWithFrame:CGRectMake(0 , 0,530, 560)];
mediaImage.tag = 12;
[cell.contentView addSubview:mediaImage];


UIImageView *typeImage = (UIImageView*)[cell.contentView viewWithTag:11];
if(!typeImage)typeImage = [[UIImageView alloc] initWithFrame:CGRectMake(0 , 0,150, 150)];
typeImage.tag = 11;
[cell.contentView addSubview:typeImage];

UILabel *textLable = (UILabel*)[cell.contentView viewWithTag:10];

if (!textLable)
    textLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 530, 560)];

这似乎工作正常,但我认为它有点难看和内存消耗。 因为它为每个项目添加了子视图,这使得它不可重复使用......

我看到THIS ANSWER,但我想自定义cellForItemAtIndexPath。

任何帮助将不胜感激。 TX, 沙哈尔。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。

这段代码很棒! 我不得不清理并重建项目。

事实证明,即使在运行项目200次之后,它也不会按原样编译它。

总之,清洁项目如果某些东西不起作用,它并不总是代码。