无法使默认的UINavigationController后退按钮起作用

时间:2015-03-11 15:07:16

标签: ios uinavigationcontroller uinavigationbar uistoryboard uinavigationitem

首先,我已经阅读了网上几乎所有的问题和答案,以及关于导航栏/后退按钮/标题/导航项目等等。我有一个导航控制器和视图控制器。没有什么花哨。无论我做什么,当我按下新的视图控制器时,我都无法显示后退按钮。无论是通过故事板推送segues还是以编程方式推送。我的视图控制器和导航栏显示正确,当我点击后退按钮所在的位置时,它可以正常工作,它会弹出视图控制器,但是,它不会显示。

在你说之前,我会列出我做过的事情:

  • 我已将导航控制器的“显示导航栏”设置为“是”。
  • 我在故事板上的导航控制器中为我的根视图控制器设置了标题。
  • 我在故事板上的导航控制器中为我的根视图控制器设置了一个后退按钮标题。
  • 我没有任何涉及导航栏/导航项目/左栏按钮/右栏按钮/隐藏后退按钮/后退按钮项目的自定义代码。
  • 我为导航控制器设置了标题。

无论我做什么,我的后退按钮都不会显示。当我调试时,它被设置为nil。我试过实例化一个,但它也没有帮助。我错过了什么?

3 个答案:

答案 0 :(得分:1)

首先检查您正在推送的控制器是否在查看器中有导航项目,您可以设置标题,后退按钮和提示。我发现,根据故事板创建控制器的方式,它可能有也可能没有,你可以在视图树中看到它。设置后退按钮似乎不起作用,除非您可以在故事板中的两个控制器中实际看到一个。

其次,我最近才意识到的一点是,你在“正在”按下的控制器中设置后退按钮的标题,而不是在后退按钮显示时显示的控制器中。

e.g。如果您有控制器A和控制器B并且您从A推送到B:您必须在控制器A的navigationItem中设置后退按钮的标签,而不是在控制器B的navigationItem中。您可能已经知道这一点,但是混乱。

答案 1 :(得分:0)

在.h

中定义属性
@property (strong, nonatomic) UIBarButtonItem *backButton;

在.m

中的viewDidLoad中
self.backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backButton.png"] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonPressed)];
self.navigationItem.backBarButtonItem = self.backButton;

并添加方法

-(void) backButtonPressed {

 [self.navigationController popViewControllerAnimated:YES];

}
哦,误读了...你不想要一个自定义按钮,只是正常按钮?也许有一个UIBarButtonSystemItem用于后面?拿这个而不是自定义图像...

检查了tintcolor?也许它设置为clearcolor ??

答案 2 :(得分:0)

这更简单。实际上,一切都是正确的。经过一番调查([[UIWindow keyWindow] recursiveDescription])后,我意识到将故事板的全局色调颜色设置为导航栏的相同颜色只是我的错。我已经明确地将色调设置为白色,现在可以看到文字。