Изменить аудио файл из UIPicker - PullRequest
1 голос
/ 15 июня 2011

У меня 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 Ответ

2 голосов
/ 03 мая 2012

Я не проверял это с вашим кодом, но когда мне нужно сделать это, я добавляю простую проверку, чтобы увидеть, есть ли уже воспроизводимый AVAudioPlayer, и остановите его перед перераспределением.В справочнике по классу от Apple *1001* есть также масса полезной информации.

// stop sound if already playing

if (audioPlayer && audioPlayer.isPlaying) {

    [audioPlayer stop];

}
...