我在每个单元格上都有一个按钮,当按下按钮时,我想从每个单元格的数组中播放不同的音频文件。
我不知道如何为我的表格视图单元格实现声音/音频文件数组。
我的UITableViewCell
上有一个按钮插座和操作。但我不确定如何在tableview.m中初始化我的AVaudioplayer
,具体如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell22";
下面我插入了我想要实现的项目的图像。 image1
答案 0 :(得分:3)
您可以尝试这样:
导入AVFoundation.framework
将此代码放在didSelectRowAtIndexPath
方法
NSString * soundPath = [[NSBundle mainBundle] pathForResource:@“你的声音名称”ofType:@“mp3”];
NSURL * soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer * player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; [玩家玩];
注意:将您的音频文件添加到项目中,然后将名称放入一个数组中。然后,您可以使用基于indexPath
的音频名称。
如果您想在tableViewCell
点击按钮时播放声音,请将标记indexPath
添加到该按钮,并在cellForRowAtIndexPath
方法
button.tag = indexPath.row;
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
并在按钮操作中粘贴相同的代码。但请使用sender.tag
代替indexPath.row
-(void)buttonPressed:(UIButton *)sender
{
NSString *soundName = [yourArray objectAtIndex:sender.tag];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; [player play];
}
答案 1 :(得分:0)
现在检查我更新的代码:播放声音
1.为你的AVAudioPlayer创建.h或.m文件中的属性。喜欢
@property (strong, nonatomic) AVAudioPlayer *audioPlayer;
<AVAudioPlayerDelegate>
醇>
@synthesize audioPlayer;
3.在以下代码中实现此代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {
yourSoundArray=[NSArray arrayWithObjects:@"sss",@"sss",@"sss",@"sss",@"sss",@"sss", nil];//dont include formate type
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [yourSoundArray objectAtIndex:indexPath.row] ofType:@"mp3"];
NSLog(@"%@",audioPath);
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
audioPlayer.delegate=self;
if (!audioError) {
NSLog(@"playing!");
audioPlayer play];
}
else {
NSLog(@"Error!");
}
4
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"%d",playing the audio);
}
快乐编码工作请检查:
答案 2 :(得分:0)
伴侣你需要主要使用两件事 第一次导入AVFounfation.framwork 第二个代码id“didSelectRowAtIndexPath” 更多细节 的 Xcode 6 - Press button to play sound 强>
答案 3 :(得分:0)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell=[tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",selectedCell.textLabel.text);
AVAudioPlayer *audioPlayer101;
if ([_detailPhrases isEqualToString:@"Basics"]){
NSArray *soundArray = [NSArray arrayWithObjects:@"cellTapSound", @"Second", nil];
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [soundArray objectAtIndex:indexPath.row] ofType:@".mp3"];
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
if (!audioError) {
[audioPlayer101 play];
NSLog(@"playing!");
}
else {
NSLog(@"Error!");
}
}
}