2011-08-28 38 views
1

我在学习其他课程中的一个班级的语音时遇到了麻烦。我在ViewDidLoad中播放声音,然后我有主要类的应用程序MainView,我想停止从ViewDIdLoad声音。我搜索论坛并没有找到解决办法。 Could你认罪帮助我?停止不同类别的AVAudioplayer

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]; 

回答

0

您正在创建视图的新实例停止声音控制器。这将启动一个新的AVAudioPlayer并停止它。显然,这是行不通的。

相反,你既可以

  1. 保留现有的视图控制器的参考通过使其成为MainView的委托,然后简单地调用[self.delegate stop];播放声音。
  2. 或者你可以管理你的应用程序代理的声音播放器,并简单地用

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

,你必须实现在应用startstop通知来自两类委托代表。

+0

好吧,所以我从viewDidLoad所有关于声音,并将其移动到appDelegate.h,然后我写无效停止声音也在AppDelegate。然后我粘贴[[[UIApplication sharedApplication]委托]停止] ;.声音是一流的,但有错误:“停止找不到协议” – Rafal

+0

好吧,最后我做到了。我上面编辑了我的代码。非常感谢。我搬到了adddelegate.m void停止和声明的声明,然后我编辑MainView.m – Rafal