MPMoviePlayerController在视图卸载后继续播放?

时间:2011-09-12 05:58:24

标签: mpmovieplayercontroller mpmovieplayer

我有一个详细视图,当详细视图中的viewdidload时,MPMoviePlayerController分配并播放音频,但即使我导航回主表,音频仍在播放。

当我导航回主表时,如何停止MPMovieplayercontroller?这是我的MPMoviePlayerController代码:

.h

MPMoviePlayerController *player;

的.m

- (void)viewDidLoad
{
[super viewDidLoad];
//Get the Movie
NSURL *movieURL = [NSURL URLWithString:@"some link"];
player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

//Place it in subview, else it won’t work
player.view.frame = CGRectMake(20, 20, 280, 25);
player.backgroundView.backgroundColor = [UIColor clearColor];
[self.view addSubview:player.view];

// Play the movie.
[player play];

}

我甚至将以下代码添加到viewdidunload方法中,但没有用。

- (void)viewDidUnload {

[player stop];
player.initialPlaybackTime = -1;
[player release];

// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

你们有什么建议?

提前致谢,

2 个答案:

答案 0 :(得分:1)

我比viewWillDisappear更喜欢viewDidDisappear的用户体验。动画开始后电影停止 - 音频以这种方式更好地为我流动。

-(void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    [_moviePlayer stop];
}

答案 1 :(得分:0)

我遇到了类似的问题。我无法使用“viewDidDisappear”或“viewWillDisappear”,因为我有一个“配置”类型的视图,可以在播放内容时打开,它将触发这两种方法。

编辑:发现viewDidUnload和viewWillUnload不再被调用(我目前在iOS 6+设备上)...

来自文档:

  

可用性:iOS(3.0及更高版本)不推荐使用:视图不再存在   在低内存条件下清除,因此永远不会调用此方法。

我刚创建了一个名为unload的简单函数,在函数内部设置我需要的任何对象= nil(我正在使用ARC)。在我调用删除视图的时候,我也调用了卸载函数。希望它可以帮到某人。