Остановка AVAudioplayer в другом классе - PullRequest
1 голос
/ 28 августа 2011

У меня проблемы с остановкой звука из одного класса в другом.Я играю звук в ViewDidLoad, а затем у меня есть основной класс для приложения MainView, где я хочу остановить звук из ViewDIdLoad.Я искал форумы и не нашел разрешения.МОЖЕТ, пожалуйста, помогите мне?

VievDidLoad находится в gdziedotykViewController.m

 NSString *path = [[NSBundle mainBundle] pathForResource:@"farmaglownaloop" ofType:@"mp3"];
startdzwiek = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
startdzwiek.numberOfLoops = -1;
[startdzwiek play];

- (void)stopping{
[startdzwiek stop];

}

и я хочу остановить звук в классе MainView.m

gdziedotykAppDelegate *dzwiekdelegat = (gdziedotykAppDelegate*)[[UIApplication sharedApplication] delegate];
      [dzwiekdelegat stopping];

1 Ответ

0 голосов
/ 28 августа 2011

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

Скорее, вы могли бы либо

  1. Сохраните ссылку на ваш существующий контроллер представления, воспроизводящий звук, сделав его делегатом MainView, а затем просто вызовите [self.delegate stop];.
  2. Или вы можете управлять проигрывателем звука в делегате приложения и просто уведомить делегата обоих классов с помощью

[[[UIApplication sharedApplication] delegate] start]; и
[[[UIApplication sharedApplication] delegate] stop];

где вы должны реализовать start и stop в делегате приложения.

...