UICollectionView ne pas montrer des images de cellules
J'ai un viewcontroller
et uicollectionview
.
J'ai utilisé le code suivant, mais il n'y a pas d'images visibles dans uicollectionview
, juste les cases jaunes :
myviewcontroller.h
{
IBOutlet UICollectionView *gallery1;
//IBOutlet UIImage *inimage;
NSArray *recipePhotos;
}
@property (nonatomic, retain) IBOutlet UICollectionView *gallery1;
//@property (nonatomic, retain) IBOutlet UIImage *inimage;
et myviewcontroller.m
- (void)viewDidLoad
{
[super viewDidLoad];
recipePhotos = [NSArray arrayWithObjects:@"im1.png","im2.png", "im3.png", "im4.png", "im5.png", "im6.png", nil];
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:CGSizeMake(100, 100)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[self.gallery1 setCollectionViewLayout:flowLayout];
[self.gallery1 setAllowsSelection:YES];
self.gallery1.delegate=self;
}
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection: (NSInteger)section {
return recipePhotos.count;
}
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
return 1;
}
//cellforitematindexpath
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
[gallery1 registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:[NSString stringWithFormat:@"c%d",indexPath.row]];
UICollectionViewCell *cell = [gallery1 dequeueReusableCellWithReuseIdentifier:[NSString stringWithFormat:@"c%d",indexPath.row] forIndexPath:indexPath];
cell.backgroundColor = [UIColor yellowColor];
UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
recipeImageView.image = [UIImage imageNamed:[recipePhotos objectAtIndex:indexPath.row]];
[cell addSubview:recipeImageView];
return cell;
}
Je ne vois aucune image (fichier image sont existants) dans les cellules uicollectionview.
Merci pour toute aide.
Est-il résolu pour vous, Murat?
ouais, merci Matt.
ouais, merci Matt.
OriginalL'auteur Murat Calim | 2013-07-07
Vous devez vous connecter pour publier un commentaire.
@Adam est droit, ne l'appelez pas
registerClass
chaque fois que vous effectuez une nouvelle cellule. Cependant...Quelque chose qui est faux ici:
Vous demander à la cellule pour une sous-vue, puis à définir une image pour que la sous-vue, puis de tenter d'ajouter que la sous-vue arrière dans la hiérarchie...où il ne l'est déjà?
N'est que sous-vue même exister? Quand est-il créé? Vous devriez peut-être sous-classe
UICollectionViewCell
et de créer la sous-vue dans sonviewDidLoad
fonction? Peut-être comme ceci:Puis dans votre
cellForItemAtIndexPath:
vous faites cela:Vous n'avez pas à l'ajouter dans la hiérarchie; il est déjà là.
Edit:
Oh, Adam est également à bon droit que sur l'ajout de l'imageView à la contentView plutôt que simplement comme un sous-vue; j'ai édité mon code pour tenir compte de cela.
Et vous avez raison, le contenu personnalisé va dans le
contentView
, comme par developer.apple.com/library/ios/documentation/uikit/reference/... Merci!OriginalL'auteur Matt Mc
ici est mon point de vue:
L'imageView devrait avoir un cadre... la meilleure option est de créer votre propre image.
assurez-vous également que les images rentrent dans le cadre de ratio et le clip de limites!
OriginalL'auteur leokash
Vous ne devriez pas faire
dans
cellForItemAtIndexPath
- vous devez vous inscrire à la classe une fois, puis retirer les cellules selon l'enregistrement.Avez-vous des images de votre projet? Si vous ne le faites pas,
imageNamed
: n'en trouverez pas. Vérifiez pour voir si l'image a été chargé ou estnil
.Enfin, essayez d'ajouter la
recipeImageView
de la cellulecontentView
plutôt que comme une sous-vue (la vue principale).viewDidLoad est souvent le lieu d'utilisation registerClass, oui. Vous devez utiliser la cellule.contentView (pas de soi.contentView).
OriginalL'auteur Adam Eberbach
attention:
faire:
Vous allouez une image (et il peut être ok.. même si un peu cher..) MAIS en AJOUTANT à chaque fois, donc à l'aide d'une cellule de 100 fois ajout de 100 sous-vues.
OriginalL'auteur ingconti