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];
}
Instead of putting the code to create one view controller in the
viewWillAppearof another view controller, why not just create theMPMoviePlayerViewControllerdirectly? 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 theMPMoviePlayerViewControllerin didSelectRow or in response to a button click.