【问题标题】:Backbarbutton item in MPMmoviPlayerView Controller's navigation barMPMmoviPlayerView 控制器导航栏中的 Backbarbutton 项
【发布时间】:2012-12-17 01:32:44
【问题描述】:

我以编程方式向 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];

}

【问题讨论】:

    标签: ios uinavigationbar mpmovieplayercontroller uinavigationitem backbarbuttonitem


    【解决方案1】:

    我认为你使用 UINavigationController 作为错误的方法。当您调用 presentViewController 并将 UINavigationController 作为 ViewController 传递时,您不是在“导航”。你只是要求显示一个视图控制器。

    “self”是 UIViewController 吗?如果是,则将其更改为 UINavigationController 并调用 pushViewController 而不是 UIViewController 的 presentViewController 方法。

    【讨论】:

      【解决方案2】:

      看看

      但我认为您提出问题的方式表明您可能对 navigationController、navigationBar 和关联的 viewController 的角色感到困惑。

      您尚未将导航栏添加到 MPMoviePlayerViewController,而是相反 - 您已将 MPMoviePlayerViewController 添加到导航控制器 (movieNavController),因为它是 rootViewController。 MovieNavController 呈现导航栏

      标准的后退栏按钮项由导航栏中的 navController 提供,用于通过包含的 viewController 堆栈导航您返回 - 以您的 rootViewController(导航堆栈中的第一个 viewController)结束。所以当你在栈上只有一个 rootViewController 时,没有什么可以返回,也没有 backBarButtonItem 出现。

      如果您想从 navigationController 返回到最初呈现它的实体,通常会在呈现对象中找到该控件。例如,您可能有一组包含在 UITabBarController 中的导航控制器 - 在这种情况下,从一个导航控制器到另一个导航控制器的导航是通过 UITabBarController 控制的。

      如果您确实想要向导航栏添加自定义按钮以使您从该导航控制器返回,那么上面链接的问题应该会给您一个良好的开端。

      正如 Ricardo 所指出的,[self presentViewController:movieNavController animated:YES completion:nil] 在这种情况下似乎没有意义。

      【讨论】:

        【解决方案3】:

        以下代码对我有用。

        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];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-14
          • 2020-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多