导航到/从另一个部分导航时,MPMoviePlayerViewController黑屏

时间:2013-11-19 18:20:59

标签: ios video mpmovieplayercontroller

我有一个标签式应用程序。每个选项卡都会在导航控制器中加载一个表视图控制器,以维护上部导航栏。

表格视图控制器显示视频列表。单击表格单元格后,将向用户显示一个MPMoviePlayerViewController,它使用以下代码加载所请求的视频:

VideoViewController * playerController = [[VideoViewController alloc] initWithContentURL:url];
[self.navigationController pushViewController:playerController animated:YES];
[playerController.moviePlayer prepareToPlay];
[playerController.moviePlayer play];

UIBarButtonItem *mailButton = [[UIBarButtonItem alloc] initWithTitle:@"Email Link" style:UIBarButtonItemStylePlain target:self action:@selector(openMailBasket:)];
playerController.navigationItem.rightBarButtonItem = mailButton;

注意:VideoViewController是MPMoviePlayerViewController的子类。

这很有效。但是,如果我点击底部的标签导航到另一个部分,然后返回“视频”部分,则会出现行为异常。

在IOS 5中,视频从头开始。这很好。

在IOS 6中,我得到一个空白的视频屏幕,上面写着“正在加载......”并且从不加载。

在IOS 7中,我获得了一个黑色视频播放器,总时间为0:00。

就像视频在IOS 6和IOS 7中被“卸载”一样。但是,如果我在viewWillAppear中执行它:

NSString *vidURL = [self.moviePlayer.contentURL absoluteString];
NSLog(@"URL: %@",vidURL);

网址有效。

注意:我必须使用MPMoviePlayerViewController而不是MPMoviePlayerController,因为我需要“Email Link”按钮显示在顶部。

当我在其他地方导航时,是否需要执行任何特殊操作以使MPMoviePlayerViewController维持视频的状态? ARC是否取消分配我的视频,如果是,为什么它在IOS 5中有效,我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

好吧,显然在这里输入它让我找到了解决方案,所以我会把它解决。

我开始考虑为什么它在IOS 5而不是6或7上工作。在我看来,ARC可能是自动释放我的视频数据,我需要一种方法来告诉IOS我想把电影带回来

我需要做的就是添加:

-(void)viewWillAppear:(BOOL)animated
{
    [self.moviePlayer prepareToPlay];
}

到我的VideoViewController类。