注意:我已经查看了其他问题,并且对它们的回答非常模糊或无益
我在View_Controller.h
@property AVAudioPlayer *playerSaxophone;
然后我在同一个文件(viewDidLoad
)中执行此操作:
NSURL *backgroundMusicSaxophone = [NSURL fileURLWithPath:
[[NSBundle mainBundle]
pathForResource:@"saxophone" ofType:@"wav"]];
self.playerSaxophone = [[AVAudioPlayer alloc]
initWithContentsOfURL:backgroundMusicSaxophone error:nil];
self.playerSaxophone.numberOfLoops = -1;
[self.playerSaxophone setVolume:0.5];
[self.playerSaxophone play];
在另一个视图控制器中,我希望能够通过单击2按钮来停止或启动播放此音频。我有什么方法可以做到这一点吗?
编辑:我在"不同的"查看控制器.m文件
//I do import ViewController.h in this file
- (IBAction)stop:(id)sender {
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[viewController.playerSaxophone stop];
}
但它没有用。
答案 0 :(得分:0)
您需要致电:
[playerSaxophone stop];
让音乐停止。
问题:另一个视图控制器不会引用playerSaxophone
。
您想要添加从另一个视图控制器引用此代码的代码意味着您必须找到一种方法来拥有三个对象 - 查看控制器A,视图控制器B和您的音频播放器 - 进行通信。
以下是一些选项:
playerSaxophone
移动到App Delegate或单身人士的@property
。然后每个视图控制器都能找到它。这些只是一些解决方案。还有其他人。
补充阅读: