2015-12-08 4 views
0

Я использовал MPMoviePlayerController для воспроизведения видео в своем веб-представлении с живого url , но когда я выхожу на контроллер вида, поэтому в это время появляется черный экран в режиме просмотра и навигации название панели изменяется, как и должно быть.MPMoviePlayerController дает мне черный пустой вид на кнопку BACK

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 



    NSURL *movieURL = [NSURL URLWithString:self.url]; 
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
    self.moviePlayer.contentURL = movieURL; 

    if (self.moviePlayer) 
    { 
     [self.moviePlayer prepareToPlay]; 

     self.moviePlayer.view.frame = self.view.bounds; 

     [self.view addSubview:self.moviePlayer.view]; 
     [self.moviePlayer.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 

     // save the movie player object 
     [self.moviePlayer setFullscreen:YES]; 
     [self.moviePlayer setShouldAutoplay:YES]; 
     [self.moviePlayer setAllowsAirPlay:YES]; 

     // Play the movie! 
     [self.moviePlayer play]; 

     [self initializeNavigationController]; 


    } 


} 

-(void)initializeNavigationController 
{ 

    UIBarButtonItem *buttonBack = [[UIBarButtonItem alloc] backButtonWithtarget:self action:@selector(Back)]; 

    self.navigationItem.leftBarButtonItem = buttonBack; 
} 

-(void)Back 
{ 

    [self.moviePlayer.view removeFromSuperview]; 
    [self stopLoadingVideoInView]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

Живое видео экран enter image description here

После кнопки Назад пресс enter image description here

+0

Можете ли вы показать проблему с экрана после того, как вы вернетесь? –

+0

Я загрузил как снимок экрана –

+0

Можете ли вы показать код для 'stopLoadingVideoInView'? Потому что я тестирую на своем примере свой код. Я работаю нормально, нет черного экрана, когда вернусь. –

ответ

0

Я решил это наконец

В приложении delgate я создал метод выделения памяти снова Vc

- (void)resetAppToFirstController 
{ 
    UIViewController *obj = [[MainMenuViewController alloc] init]; 


    //Create Navigation Controller to Hold View Controller 
    UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:obj]; 
    [self.window setRootViewController:navigationController]; 
} 

и на кнопку моей спине действия

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    appDelegate.resetAppToFirstController; 

Это решало мой вопрос может помочь кому-то для MPMoviePlayer

0

Я думаю, вы просто удалить [self.view removeFromSuperview]; и заменить на [self.moviePlayer.view removeFromSuperview];

+0

Не работает тот же результат –

+0

Можете ли вы поделиться снимком экрана раскадровки? –

+0

Он сгенерирован программно –

0

Если вы добавили youMovieController в качестве дополнительного представления родительского представления, используйте этот метод для его удаления.

[self.view removeFromSuperView] 

В случае, если вы толкающей ViewController через UINavigationController, просто назвать это, чтобы вернуться.

[self.navigationCotroller popViewController:animated] 

Если у вас есть ViewController, используйте это, чтобы удалить его.

[self dismissViewController] 
0

удалить [self.view removeFromSuperview]; и замените на [self.moviePlayer.view removeFromSuperview];

- (void)resetAppToFirstController 
{ 
    UIViewController *obj = [[MainMenuViewController alloc] init]; 


    //Create Navigation Controller to Hold View Controller 
    UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:obj]; 
    [self.window setRootViewController:navigationController]; 
} 
+0

@ Маулик Раджани уже упомянул об этом в своем ответе –