views:

1685

answers:

1

I have a view that shows a MPMoviePlayerViewController modally. When testing it in the iPad simulator it works well on the first try. If I dismiss the video and then show the view again, the player only plays the audio, but not the video.

Is this a simulator quirk or am I doing something wrong? Here's my code:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    MPMoviePlayerViewController* v = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:v.moviePlayer];
    [self presentMoviePlayerViewControllerAnimated:v];
    [v release];
}

-(void) playbackDidFinish:(NSNotification*)aNotification
{
    MPMoviePlayerController *player = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:player];
    [player stop];
    [self dismissMoviePlayerViewControllerAnimated];
}
+1  A: 

Instead of putting the code to create one view controller in the viewWillAppear of another view controller, why not just create the MPMoviePlayerViewController directly? Usually view controllers are created or shown in direct response to some user action. Other than that there is nothing wrong with the code shown. I have never had any trouble playing movies in the simulator, but I created the MPMoviePlayerViewController in didSelectRow or in response to a button click.

drawnonward
Thanks. I want to show the MPMoviePlayerViewController full-screen after clicking on a tab bar icon, that's why I'm using another view controller.
hgpc
I found a view to create the MPMoviePlayerViewController using the tab bar controller delegate. Thanks!
hgpc