Как сделать, чтобы avaudioplayer прекратил проигрывать предыдущую песню, нажимая на новостную ленту? - PullRequest
0 голосов
/ 08 марта 2011

Я создал вид с помощью кнопки песни.

  • Когда мы нажимаем на кнопку, она переходит к таблице, содержащей список песен.
  • Когда мы выбираем песню, она идетв другой вид и воспроизводит песню.
  • Всякий раз, когда воспроизводится песня, мы можем вернуться к основному виду или к таблице песен, в которой песня будет воспроизводиться в фоновом режиме, и здесь все прекрасно.

    Но всякий раз, когда я пытаюсь воспроизвести другую песню из таблицы песен, предыдущая песня не останавливается, и она продолжает воспроизводиться вместе с выбранной песней.

    Моя цель - воспроизвести песню, когда она переключена на другой вид.Я сделал это, но я хочу, чтобы всякий раз, когда я выбираю другую песню из таблицы песен, она должна останавливать предыдущую песню и воспроизводить выбранную песню.

    Пожалуйста, решите эту проблему.

1 Ответ

0 голосов
/ 08 марта 2011

Вы должны остановить avaudioplayer и заново создать экземпляр после освобождения существующего.

- (IBAction)buttonClicked 
{
 if([audioPlayer isPlaying])
 {
  [audioPlayer stop];
  [audioPlayer release];
  audioPlayer = nil;
  audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfUrl:songUrl];
  [audioPlayer play];
}
// Do something like change view etc.
}

Если вы выбираете из табличного представления, введите это в UITableView delegate didSelectRowAtIndexPath:

...