在UITollectionViewCell中UIImageView在UITableViewCell中的bug

时间:2013-09-23 19:25:40

标签: objective-c uitableview uiimageview uicollectionviewcell

UICollectionView的设置是使用IB定义的(即滚动方向:水平等),并使用IB嵌入UITableViewCell

UICollectionViewCell显示,图片显示但是,图像堆叠在一起,而不是每个cell一张图像保真。

images stacked on top of one another

我为每张图片制作了个人UIImageView作为实例变量,并使用switch消息中的if和cellForItemAtIndexPath语句进行了相同的操作。

由于使用了IB,因此识别错误可能是一个延伸,但是,如果代码中显而易见,请您帮助识别错误?感谢。

@implementation AccountTableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state

    imageArray = @[[UIImage imageNamed:@"image1.png"], [UIImage imageNamed:@"image2.png"], [UIImage imageNamed:@"image3.png"], [UIImage imageNamed:@"image4.png"], [UIImage imageNamed:@"image5.png"]];

    self.oCollectionView.dataSource = self;
    [self.oCollectionView setFrame:self.contentView.frame];
    [self.contentView addSubview:self.oCollectionView];
    self.oCollectionView.backgroundColor = [UIColor clearColor];
    [self.oCollectionView reloadData];
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return imageArray.count;
}

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

    UIImageView* iv = [[UIImageView alloc] init];
    [cell.contentView addSubview:iv];
    [iv setFrame:cell.contentView.frame];
    iv.image = imageArray[indexPath.row];

    return cell;
}

@end

1 个答案:

答案 0 :(得分:1)

这是因为您每次出列时都会向UIImageView添加cell

相反,您应该继承UICollectionViewCell(我们称之为“MYCollectionViewCell”,将UIImageView添加到cell中的storyboard子类并设置{{1作为子类的出口。

然后,在UIImageView内,将cellForItemAtIndexPath图像设置为:

imageView's