从UIPicker更改音频文件

时间:2011-06-15 14:46:22

标签: uipickerview avaudioplayer

我设置UIPickerView并运行正常。当用户选择一行时,我希望启动一个音频文件,但如果用户在第一个音频文件停止播放之前选择另一行,我希望它停止第一个音频文件并让新音频文件播放。 我目前可以使用下面的代码执行此操作,但两个文件同时播放,我找不到阻止第一个文件的方法。

我走错了路吗? (我是SDK编码的新手)

任何想法都将不胜感激 感谢

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {

    return 1;
}

-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{
    return [list count];
}


-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [list objectAtIndex:row];


}

-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    NSString *string = [NSString stringWithFormat:@"%@", [list2 objectAtIndex:row]];
    pickLabel.text = string;


    if(row == 1){



        NSString *path = [[NSBundle mainBundle]

                          pathForResource:@"del08sample"ofType:@"mp3"];

        AVAudioPlayer* theAudio = [[AVAudioPlayer alloc]

                                   initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        [theAudio play];


    }

    else if (row == 2){



        NSString *path = [[NSBundle mainBundle]

                          pathForResource:@"icgi03sample"ofType:@"mp3"];

        AVAudioPlayer* theAudio = [[AVAudioPlayer alloc]

                                   initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];


        [theAudio play];


    }

}

1 个答案:

答案 0 :(得分:2)

我没有用你的代码对此进行测试,但是当我需要这样做时,我添加了一个简单的检查 如果已经有正在播放的AVAudioPlayer并在重新分配之前将其停止。 Apple的AVAudioPlayer Class Reference也有很多有用的信息。

// stop sound if already playing

if (audioPlayer && audioPlayer.isPlaying) {

    [audioPlayer stop];

}