0

프로그래밍 방식으로 MPMoviePlayerViewController에 탐색 모음을 추가했습니다. 이전보기 컨트롤러로 이동하기 위해 탐색 모음에 백바 단추 항목을 추가하는 방법 이 같은 잘못된 방법을 UINavigationController가 사용하고MPMmoviPlayerView 컨트롤러의 탐색 모음에있는 백 바 버튼 항목

-(IBAction)playA1{ 

NSURL * urlA1 = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"A1"ofType:@"mp4"]]; 

MPMoviePlayerViewController *playercontrollerA1 = [[MPMoviePlayerViewController alloc] initWithContentURL:urlA1]; 
playercontrollerA1.moviePlayer.repeatMode = MPMovieRepeatModeOne; 
// [self presentMoviePlayerViewControllerAnimated:playercontrollerA1]; //comment out if navigation bar code is added 
playercontrollerA1.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 

// ADD UI NAVIGATION BAR in EMBEDDED CONTROL STYLE 

playercontrollerA1.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 
UINavigationController *movieNavController = [[UINavigationController alloc] initWithRootViewController:playercontrollerA1]; 
[email protected]"APone"; 
playercontrollerA1.navigationController.navigationBar.tintColor = [UIColor blackColor]; 

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(favouriteButtonClicked:)]; 
playercontrollerA1.navigationItem.rightBarButtonItem = button; 
[self presentViewController:movieNavController animated:YES completion:nil]; 

}

답변

0

나는 것. presentViewController를 호출 할 때 UINavigationController를 ViewController로 전달하면 "탐색"하지 않습니다. 당신은 단지 viewcontroller를 보여달라고 요청하는 것입니다.

"자체"는 UIViewController가 맞습니까? 그렇다면 UINavigationController로 변경하고 UIViewController의 presentViewController 메서드 대신 pushViewController를 호출하십시오.

+0

감사합니다. Ricardo. 나를 위해 속임수를했다. – Sivon

+0

당신은 Sivon을 환영합니다. –

0

한 번 봐하지만 난 당신이 질문을 한 방법은 당신이있는 navigationController, 내비게이션 바의 역할에 혼동하기 될 수 있음을 시사 생각 및 연관된 viewController.

MPMoviePlayerViewController에 탐색 막대를 추가하지 않고 역순으로 추가했습니다. MPMoviePlayerViewController를 탐색 컨트롤러 (movieNavController)에 rootViewController로 추가했습니다. MovieNavController는 탐색 막대를 표시합니다.

표준 백 바 버튼 항목은 네비게이션 막대의 navController에서 포함 된 viewController 스택을 통해 다시 탐색 할 수 있습니다. 즉, 네비게이션 스택의 첫 번째 viewController 인 rootViewController로 끝납니다. 따라서 스택에 rootViewController 만 있으면 아무 것도 돌아갈 수 없으며 backBarButtonItem도 제공되지 않습니다.

navigationController에서 첫 번째로 표시된 엔터티로 돌아가려면 해당 컨트롤이 일반적으로 presenting 개체에서 발견됩니다. 예를 들어, UITabBarController에 포함 된 navigationController 집합을 가질 수 있습니다.이 경우 navigationControllers 중 하나에서 다른 탐색은 UITabBarController를 통해 제어됩니다.

할 경우 네비게이션 컨트롤러에서 나 오도록 네비게이션 바에 맞춤 검색 버튼을 추가하려면 위에 링크 된 질문을 참조하십시오.

[self presentViewController:movieNavController animated:YES completion:nil]은 리카르도가 지적한 것처럼이 맥락에서는 의미가없는 것처럼 보입니다.

0

다음 코드는 저에게 효과적입니다.

NSURL * urlA1 = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"A1"ofType:@"mp4"]]; 
MPMoviePlayerViewController *playercontrollerA1 = [[MPMoviePlayerViewController alloc] initWithContentURL:urlA1]; 
playercontrollerA1.moviePlayer.repeatMode = MPMovieRepeatModeOne; 
playercontrollerA1.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
playercontrollerA1.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
playercontrollerA1.moviePlayer.controlStyle = MPMovieControlStyleNone; 
[email protected]"APone"; 
playercontrollerA1.navigationController.navigationBar.tintColor = [UIColor blackColor]; 
[self.navigationController pushViewController:playercontrollerA1 animated:YES]; 
관련 문제