MPMoviePlayerController - 拆分视图控制器应在布局之前设置其子项

时间:2012-03-13 04:21:37

标签: ios mpmovieplayercontroller uisplitviewcontroller

将播放消息发送到在splitView详细信息视图控制器中实例化的MPMoviePlayerController实例的适当点是什么?

我的应用正在接收上述控制台消息(带有!)但没有崩溃......

该应用正在利用MPMoviePlayerController从资产网址播放电影 负责任的方法如下:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self startPlayingVideo:self];
}

它播放的视频很好,但控制台消息正在逼近...... 如果我将方法调用移至viewWillAppear:animate:,则控制台消息不会显示。 问题是现在我只能听到音频但看不到视频。

为了完整性,这是被调用的方法......

- (void) startPlayingVideo:(id)sender

    NSURL *movieURL = [NSURL URLWithString:self.movieURLString];

    if (self.moviePlayer != nil){
       [self stopPlayingVideo:nil];
    }

    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL ];

    if (self.moviePlayer != nil){

        [[NSNotificationCenter defaultCenter] 
         addObserver:self
         selector:@selector(videoHasFinishedPlaying:)
         name:MPMoviePlayerPlaybackDidFinishNotification
         object:self.moviePlayer];

         self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;

         [self.moviePlayer prepareToPlay];
         [self.moviePlayer play];

         [self.view addSubview:self.moviePlayer.view];
         [self.moviePlayer setFullscreen:YES animated:YES];

    } else {
         NSLog(@"Failed to instantiate the movie player.");
  }  
}

1 个答案:

答案 0 :(得分:0)

我的原始问题源于将MoviePlayerController作为完全不同的viewController(嵌入在细节导航控制器中)。我重新设计了父视图以包含moviePlayer子视图。这解决了这个问题。