私はUIImageViewを含むUICollectionViewを持っていて、1つの行だけです。タップしたときに画像を選択した画像に変更しようとしていますが、何らかの理由で画像が更新されません。 UIImageはUICollectionViewを呼び出したときに設定されている:UICollection UIImageViewでUImageを変更するには?
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
それが呼び出したときに、それは更新されません。
- (無効)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
私はすでにsetNeedsDisplay、reloadData、setImageを試してみましたが、UImageView自体を無効にして、cellForItemAtIndexPathに設定していないことを確認してください。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell;
UIImage *curImage;
static NSString *cellAvatarMediaIdentifier = @"cvAvatarCell";
cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellAvatarMediaIdentifier forIndexPath:indexPath];
Child *currentChild = [self.children objectAtIndex:indexPath.row];
curImage = [UIImage imageNamed:@"male.png"];
UIImageView *childSilhouetteView = (UIImageView *)[cell viewWithTag:300];
if (curImage != nil)
{
// this WORKS !!!!
[childSilhouetteView setImage:curImage];
}
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *selectedImage;
Child *currentChild = [self.children objectAtIndex:indexPath.row];
UIImageView *childSilhouetteView = (UIImageView *)[collectionView viewWithTag:300];
selectedImage = [UIImage imageNamed:@"male_selected.png"];
if (selectedImage != nil)
{
// This does NOT work, image is never updated
NSLog(@"Before setting image");
childSilhouetteView = nil;
[childSilhouetteView setImage:selectedImage];
[childSilhouetteView setNeedsDisplay];
[collectionView reloadData];
}
}