MPMoviePlayerController - у дочерних контроллеров представления должны быть установлены дочерние элементы перед макетом - PullRequest
0 голосов
/ 13 марта 2012

Какая точка подходит для отправки сообщения воспроизведения экземпляру MPMoviePlayerController, созданному в детализированном контроллере представления splitView?

Мое приложение получает указанное выше консольное сообщение (с!), Но не вылетает ...

Приложение использует MPMoviePlayerController для воспроизведения фильма с URL ресурса и ответственный метод вызывается следующим образом:

- (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 голосов
/ 19 декабря 2012

Моя первоначальная проблема возникла из-за того, что MoviePlayerController был совершенно другим viewController (встроен в детальный контроллер навигации). Я перепроектировал родительское представление, чтобы включить дочернее представление moviePlayer. Это решило проблему.

...