如何防止 UINavigationController 更改 pushViewController 上的后退按钮:

Posted

技术标签:

【中文标题】如何防止 UINavigationController 更改 pushViewController 上的后退按钮:【英文标题】:How to prevent UINavigationController from changing back button on pushViewController: 【发布时间】:2014-08-14 14:16:56 【问题描述】:

是否可以防止 UINavigationController 在推送视图控制器时更改 backBarButtonItem?我在后退按钮位置设置了一个自定义图像,我希望将其保留在那里。 (我正在制作应用程序抽屉/汉堡菜单)

我已尝试使用以下代码,但它并没有改回来

 UIBarButtonItem *barButtonItem = [[centerViewController navigationItem] backBarButtonItem];

 [navigationController pushViewController:leftViewController animated:false completion:^

    [[centerViewController navigationItem] setBackBarButtonItem:barButtonItem];
 

【问题讨论】:

每次按下视图控制器时,您都必须将后退按钮项目的图像重置为汉堡图标 【参考方案1】:

假设您从 View1 推送 View2,那么在 View1 的加载方法上确实设置了一个像这样的自定义后退按钮

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                               initWithImage: [UIImage imageNamed:@"yourImage.png"]
                               style: UIBarButtonItemStyleBordered
                               target: nil action: nil];

[self.navigationItem setBackBarButtonItem: backButton];

【讨论】:

【参考方案2】:

在推送新控制器之前设置 backBarButtonItem。

在新推送的 ViewController 中显示没有文字的 backBarButton 的后退箭头的示例:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@""
                                                                            style:UIBarButtonItemStylePlain
                                                                           target:nil
                                                                           action:nil];
[self.navigationController pushViewController:newVC animated:YES];

【讨论】:

以上是关于如何防止 UINavigationController 更改 pushViewController 上的后退按钮:的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController

UINavigationController 风格

全屏显示 ViewController

多控制器

UINavigationControllerDelegate 不起作用

viewController 出现时出现黑色