按顺序将音频文件数组加载到集合视图单元格
Posted
技术标签:
【中文标题】按顺序将音频文件数组加载到集合视图单元格【英文标题】:Load audiofile array to collection view cells in sequence manner 【发布时间】:2013-06-10 17:15:37 【问题描述】:我已在此方法中将图像和标签加载到自定义 collectionview 单元格
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:kCellID forIndexPath:indexPath];
在同一方法中根据实际 NSIndexPath 值赋予单元格标题
cell.label.text = [NSString stringWithFormat:@"%ld,%ld", (long)indexPath.row, (long)indexPath.section];
在自定义集合视图单元格的每个单元格中以相同的方法加载不同的图像
NSString *imageToLoad = [NSString stringWithFormat:@"%d.jpg", indexPath.row];
cell.image.image = [UIImage imageNamed:imageToLoad];
我想以相同的方法在自定义集合视图单元格的每个单元格中加载不同的音频文件
audioArray =[[NSArray alloc] initWithObjects:@"Theme1", @"Theme2", @"Theme3", @"Theme4", nil];
NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:filePath ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: audioFilePath];
audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:fileURL error:nil];
如果我在下面添加 indexPath.row
NSString *filePath = [audioArray objectAtIndex:indexPath.row];
然后它总是在所有单元格的数组中播放“Theme4”最后一个音频文件
如果我写 0
NSString *filePath = [audioArray objectAtIndex:0];
然后它总是播放“Theme1”所有单元格中的第一个音频文件
如何在自定义集合视图单元格的每个单元格中加载不同的音频文件。
感谢您的帮助。
【问题讨论】:
【参考方案1】:您应该在
中添加这些代码行- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
audioArray =[[NSArray alloc] initWithObjects:@"Theme1", @"Theme2", @"Theme3", @"Theme4", nil];
NSString *filePath = [audioArray objectAtIndex:indexPath.row];
NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:filePath ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: audioFilePath];
audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:fileURL error:nil];
而不是在
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
希望这会有所帮助。
【讨论】:
以上是关于按顺序将音频文件数组加载到集合视图单元格的主要内容,如果未能解决你的问题,请参考以下文章