2010-10-20 45 views
0

Dans Ipad (IOS 3.2), je travaille sur une application qui a besoin de jouer une ouverture .mov. Lorsque la vidéo (située dans startUpVC) est terminée, elle appelle un autre VC pour une page d'accueil. Après plusieurs changements de VC lorsque j'ai appelé la fonction [viewController.view removefromSuperView] dans le délégué, j'ai trouvé que l'application a appelé le startUpVC (en arrière-plan) sans aucun code. Voici mes codes:MPMoviePlayerViewController problème de relecture indésirable

intérieur StartupVC

- (void)loadMovie { 
NSLog(@"Load Movie"); 
NSString *path = [[NSBundle mainBundle] pathForResource:@"opening3" ofType:@"mov" inDirectory:nil]; 
NSURL *movieURL = [NSURL fileURLWithPath:path]; 
MPMoviePlayerViewController *theMoviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; 
theMoviePlayer.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[theMoviePlayer.moviePlayer setControlStyle:MPMovieControlStyleNone]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieCallback:) 
              name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 
[theMoviePlayer.moviePlayer.view setFrame:self.view.bounds]; 
[theMoviePlayer.moviePlayer.view setTransform:CGAffineTransformMakeRotation(M_PI/2)]; [self.view addSubview:theMoviePlayer.view]; 
MPMoviePlayerController *startPlayer = [theMoviePlayer moviePlayer]; 
[startPlayer play]; 

En délégué

- (void)goTitle { 
NSLog(@"go title"); 
IPAD03ViewController *vc = [[IPAD03ViewController alloc] initWithNibName:@"IPAD03ViewController" bundle:nil]; 
[viewController.view removeFromSuperview]; 
[window addSubview:vc.view]; 


- (void)goStart { 
NSLog(@"go Start"); 
PageViewerVC *vc = [[PageViewerVC alloc] initWithPhotoSource:[PageSet samplePhotoSet]]; 
[viewController.view removeFromSuperview]; 
[window addSubview:vc.view]; 
- (void)goCredits { 
NSLog(@"go credits"); 
CredtisVC *vc = [[CredtisVC alloc] initWithNibName:@"Credits" bundle:nil]; 
NSLog(@"1st"); 
[viewController.view removeFromSuperview]; 
NSLog(@"2nd"); 
[window addSubview:vc.view]; 

Le prob est que quand j'ai fini (allez commencer) et appelez le délégué pour la fonction goCredits, après (1er) ([viewController.view remo veFromSuperview];) le programme jouera à nouveau le film en arrière-plan ....

Merci!

Répondre

0

vous avez une sorte de réseau d'appels emmêlés, et movieCallBack n'est pas affiché. Votre problème sent comme une sur-libération de la mémoire qui a ensuite fane les pointeurs dans ces méthodes. Avez-vous des zombies?