【问题标题】:Cant turn off sound player when new navigation controller is pushed推新导航控制器时无法关闭声音播放器
【发布时间】:2025-12-13 13:00:09
【问题描述】:

我正在播放可以通过以下方式打开和关闭的音频

IBAction //播放音频

NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
resourcePath = [resourcePath stringByAppendingString:@"/Apptrack.mp3"];
NSLog(@"Path to play: %@", resourcePath);
NSError* err;

//Initialize our player pointing to the path to our resource
player = [[AVAudioPlayer alloc] initWithContentsOfURL:
          [NSURL fileURLWithPath:resourcePath] error:&err];

if( err ){

    NSLog(@"Failed with reason: %@", [err localizedDescription]);
}
else{
    //set our delegate and begin playback
    player.delegate = self;
    [player play];
    player.numberOfLoops = -1; //(for continuous loop use -1, or any number for number of loops)
    player.currentTime = 1;
    player.volume = .5;

}

IBAction 关闭声音播放器://停止音频

 [player stop];

当我推到另一个视图控制器并再次返回时,该按钮不再用于停止音频并且它不断运行(循环大约 3 分钟长)。然后我尝试将其添加到上面的代码中:

 if ([self.player isPlaying] == YES) {
     [self.player stop];
    } else {
     [self.player play];
    }

仍然没有,也许在编程方面更有经验的人可以指出我做错了什么?

【问题讨论】:

  • 只是更新这只是一个问题,如果音频正在播放,因为下一个视图被推送。我将[player stop]; 放在viewdidload 中,试图在导航回原始视图控制器时停止音频播放,但仍然没有?出于某种原因,一旦播放了音频并加载了下一个导航控制器,它就会拒绝响应player stop 命令。

标签: xcode ios5 object avaudioplayer


【解决方案1】:

好的,我找到了一个解决方法,我将 [player stop]; 添加到按钮的 IBAction 中,然后推送到下一个视图控制器

【讨论】: