解雇模态视图控制器会导致音乐停止

时间:2012-08-29 13:32:02

标签: iphone ios5 audio modalviewcontroller

我正在创建一个应用程序,我需要一直播放背景音乐。在应用程序启动时,我开始播放音乐,一切都很好,直到我解雇模态视图控制器(我这样做回到应用程序的主屏幕)。此时,音乐突然停止,当我尝试调整音量时,它实际上是“铃声”......在5-10秒之后它会回到“音量”,我可以再次启动音乐。

有没有人遇到过这个问题?我很难找到问题的根源......

编辑: 这就是我开始播放音乐的方式(theData是我的共享数据对象)

NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"bg" ofType:@"mp3"]; 

theData.backgroundMusicPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicPath] error:nil];

theData.backgroundMusicPlayer.delegate = self;

[theData.backgroundMusicPlayer prepareToPlay];

[theData.backgroundMusicPlayer play];

theData.backgroundMusicPlayer.numberOfLoops = -1; 

在应用程序中,我有两个场景:我执行一个segue从场景1到场景2,然后返回我使用以下代码:

 [self dismissModalViewControllerAnimated:NO];
 [theScene removeSubviews];  

方法removeSubviews:

[fbInfoView removeFromSuperview];
[logoView removeFromSuperview];
 self.captureSession=nil;  // ending AVCaptureSession

1 个答案:

答案 0 :(得分:1)

如何创建和设置theData并不是很清楚,但我建议你为此目的使用单例对象。像这样:

@interface MySingleton : NSObject {

}
+(MySingleton*)sharedHelper;
-(void)playMusic;
@end

实施:

@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;

+(MySingleton*)sharedHelper
{
    if (!_sharedMySingleton)
        [[self alloc] init];

    return _sharedMySingleton;

    return nil;
}

+(id)alloc
{
    NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
    _sharedMySingleton = [super alloc];
        return _sharedMySingleton;
    }

    return nil;
}

-(id)init {
    self = [super init];
    if (self != nil) {
        // initialize stuff here
    }

    return self;
}

-(void)playMusic
{
   // your code
}

    @end

并称之为:

[[MySingleton sharedHelper] playMusic];