0

MPMoviePlayerViewController にプログラムでナビゲーション バーを追加しました。バックバー ボタン項目をナビゲーション バーに追加して、前のビュー コントローラーに移動するにはどうすればよいですか?

-(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];
playercontrollerA1.navigationItem.title=@"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];

}

4

3 に答える 3

0

間違ったメソッドとしてUINavigationControllerを使用していると思います。UINavigationControllerをViewControllerとして渡してpresentViewControllerを呼び出す場合、「ナビゲート」していません。ビューコントローラを表示するように要求しているだけです。

「自己」はUIViewControllerですか?はいの場合、これをUINavigationControllerに変更し、UIViewControllerのpresentViewControllerメソッドの代わりにpushViewControllerを呼び出します。

于 2012-12-17T03:55:48.547 に答える
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;
playercontrollerA1.navigationItem.title=@"APone";
playercontrollerA1.navigationController.navigationBar.tintColor = [UIColor blackColor];
[self.navigationController pushViewController:playercontrollerA1 animated:YES];
于 2012-12-17T16:03:02.080 に答える
0

を見てみましょう

しかし、あなたが質問した方法は、navigationController、navigationBar、および関連する viewControllers の役割について混乱している可能性があることを示唆していると思います。

ナビゲーション バーを MPMoviePlayerViewController に追加したのではなく、その逆です。MPMoviePlayerViewController を rootViewController としてナビゲーション コントローラー (movieNavController) に追加しました。MovieNavController はナビゲーション バーを表示します

標準の戻るバー ボタン アイテムはナビゲーション バーの navController によって提供され、含まれる viewController のスタックをナビゲートして戻ります - rootViewController (ナビゲーション スタックの最初の viewController) で終わります。したがって、スタックに rootViewController しかない場合、戻るものは何もなく、backBarButtonItem は表示されません。

navigationController から最初にそれを提示したエンティティに戻りたい場合、そのためのコントロールは通常、提示オブジェクトにあります。たとえば、UITabBarController に一連のナビゲーション コントローラが含まれている場合があります。この場合、これらのナビゲーション コントローラの 1 つから別のナビゲーションは、UITabBarController を介して制御されます。

navbar にカスタム ボタンを追加して、navigationController から元に戻したい場合は、上記のリンク先の質問を参考にしてください

[self presentViewController:movieNavController animated:YES completion:nil]リカルドが指摘したように、このコンテキストでは意味がないようです。

于 2012-12-17T04:09:37.473 に答える