Изменить вид после воспроизведения видео - PullRequest
3 голосов
/ 24 октября 2011

Мое видео работает, когда я нажимаю кнопку воспроизведения, и я знаю, что код для изменения вида работает.Я просто не могу заставить вид измениться после того, как мое видео закончилось, не знаю, что происходит не так.Есть идеи, как изменить вид после завершения воспроизведения видео?

Мой код для воспроизведения фильма

-(IBAction)playMovie:(id)sender {
NSString *movieUrl = [[NSBundle mainBundle] pathForResource:@"Movie_1666" ofType:@"m4v"]; 
playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:movieUrl]];
//Smoothe Transition
//[self presentMoviePlayerViewControllerAnimated:playerController];
//Instant Transistion
[self presentModalViewController:playerController animated:NO];
playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
playerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
playerController.moviePlayer.controlStyle = MPMovieControlStyleNone;
[playerController.moviePlayer play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:playerController]; }

Мой метод смены просмотров

- (void)playbackFinished:(NSNotification*) notification {
MPMoviePlayerController *playerController = [notification object];
[[NSNotificationCenter defaultCenter] 
 removeObserver:self
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:playerController];

View2 *view2 = [[View2 alloc] initWithNibName:@"View2" bundle:nil];
View2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:view2 animated:YES]; }

РЕДАКТИРОВАТЬ: Мой объект уведомления был неправильным и не вызывал мой метод playFinished, это изменение исправляет это.

- (void)playbackFinished:(NSNotification*) notification {
playerController = [notification object];
[[NSNotificationCenter defaultCenter] 
 removeObserver:self
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:playerController];

Я также поместил это в мой заголовочный файл, чтобы сделать его глобальным для использования в моем методе воспроизведенииFinished

MPMoviePlayerViewController *playerController;

1 Ответ

1 голос
/ 24 октября 2011

Как только воспроизведение фильма закончится, отключите просмотр playerController без анимации. Также проверьте, представляете ли вы View2 в основном потоке.

Edit: Уволить playerController

[playerController dismissModalViewControllerAnimated:NO];
...