インターネット経由でアルバムをダウンロードすると、カバー画像付きのフォルダがいくつか作成されます。その画像をcollectionViewに表示したい場合は、常にすべてのアルバムに対して同じ画像を表示します。たとえば、アルバム1、アルバム2、アルバム3をablum 1でそれぞれcover.png、ablum2でcover.png、album3でcover.pngをダウンロードしたとします。ここアルバムにダウンロードされたCollectionView画像は、すべてのCollectionViewCellで同じです。
コードである:(Iバンドル内の画像と配列から来ている画像を使用するかどうかをテストするために、それが動作することを私は正確)。
#pragma mark - Collection View
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [[DBManagement database] getNBDownloadedAlbums: [[NSUserDefaults standardUserDefaults] objectForKey:@"SettingsWebview"]];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"cell";
AlbumsController *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
if (!cell)
{
cell = [[AlbumsController alloc] initWithFrame:CGRectMake(0,0,cell.frame.size.width , cell.frame.size.height)];
}
NSString * coverImagePath = [[[[albums objectAtIndex:indexPath.row] objectForKey:@"URL"] stringByDeletingLastPathComponent] stringByAppendingString:@"/cover.png"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:coverImagePath])
{
NSLog(@"Cover : perso");
cell.imageView.image = [UIImage imageNamed:coverImagePath];
cell.label.text = coverImagePath;
}
else
{
NSLog(@"Cover : generique");
cell.imageView.image = [UIImage imageNamed:@"nocover.png"];
cell.label.text = @"nocover.png";
}
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(200, 155);
}
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(5, 5, 5, 5);
}
編集:私はそれをステップバイステップで行うと が、その行が仕事をしていないようです。
cell.imageView.image = [UIImage imageNamed:coverImagePath];
は良いイメージをロードしません。私は理解していないのは、私がipadで直接iexplorerをチェックしているので、coverImagePathを読むとその名前が良い、カバーが良いイメージだからですが、imageView.imageへのイメージのロードは良くありません。名前が正しい場合でも常にすべてのセルビューで繰り返される最初のイメージです。奇妙な。
第2編集: あなたの情報のために、画像カバーの名前は各フォルダcover.pngで同じですか、それは問題ですか?
CollectionViewの各行に1つのセルがありますか? – Signo
うん、私は "細胞"と呼ばれる細胞は1つだけです。 – Claudio
CollectionViewの行の量に基づいて毎回異なる値が返されるかどうかを調べるには、indexPath.rowの値をNSlogする必要があります。同様の問題があり、IndexView.sectionを使用する必要がありました。それぞれ1行しかないので、indexPath.rowを使うと常に1が返されます。 – Signo