Остановить воспроизведение музыки при выходе из Initial View Controller (используя AVAudioPlayer) - PullRequest
0 голосов
/ 25 марта 2012
- (void)viewDidLoad {
       [super viewDidLoad];

    NSURL *url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/Intro2.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = -1;

    if (audioPlayer == nil)
        NSLog([error description]);
    else 
        [audioPlayer play];
}

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

Также, возможно, это не связано, но у меня есть проблема (желтый!) в этой строке кода:

NSLog([error description]);

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Если музыка продолжает воспроизводиться, это означает, что контроллер вида все еще сохраняется.Например, это корневой контроллер вашего контроллера навигации.

Чтобы остановить музыку, когда контроллер представления больше не отображается, вы должны использовать метод viewWillDisappear:

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [audioPlayer stop]; // Or pause
}

Если вы хотите, чтобы музыка возобновлялась при повторном отображении контроллера вида, используйте метод viewWillAppear:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [audioPlayer play];
}

Чтобы удалить предупреждение, измените строку:

NSLog([error description]);

в:

NSLog(@"%@", [error description]);
0 голосов
/ 25 марта 2012

Возможно, я неправильно понимаю, но вы можете просто использовать одно из событий жизненного цикла UIView ниже, чтобы вызвать stop в вашем экземпляре AVAudioPlayer.

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...