Ios UINavigationController中的“后退”按钮奇怪地消失,但仍在工作

Ios UINavigationController中的“后退”按钮奇怪地消失,但仍在工作,ios,objective-c,ios7,Ios,Objective C,Ios7,在iOS7下,我遇到了一个问题,即如果使用特定的背景图像进行设置,则“后退”按钮项将不会显示: int imageSize = 21; //REPLACE WITH YOUR IMAGE WIDTH [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) forBarM

在iOS7下,我遇到了一个问题,即如果使用特定的背景图像进行设置,则“后退”按钮项将不会显示:

int imageSize = 21; //REPLACE WITH YOUR IMAGE WIDTH

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0)
                                                   forBarMetrics:UIBarMetricsDefault];
UIImage *barBackBtnImg = [[UIImage imageNamed:@"BackArrowDark.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barBackBtnImg
                                                forState:UIControlStateNormal
                                              barMetrics:UIBarMetricsDefault];
执行此操作后,我在导航控制器中按下的任何ViewController都不会显示“后退”按钮项,即使按它应该在的位置,也会使其出现,并且此view controller的任何后续按下都会使按钮出现在屏幕上

这个问题只出现在iOS7下:在iOS6下一切都可以完美地工作

使用leftBarButtonItem完全更改后退按钮将禁用后退滑动,因此这不是一个选项

知道我做错了什么吗


非常感谢您的考虑。

在尝试了不同的解决方案后,我发现在iOS7下更改backIndicatorImage效果最好,而且似乎与iOS7接口范例一致:

[[UINavigationBar appearance] setTintColor:[UIColor grayColor]];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; // Takes out title

UIImage *backButtonImage = [UIImage imageNamed:@"BackArrowDark.png"];

if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
  [[UINavigationBar appearance] setBackIndicatorImage:backButtonImage];
  [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage];
} else {
  int imageSize = 21; // REPLACE WITH YOUR IMAGE WIDTH

  [[UIBarButtonItem appearance] setBackButtonBackgroundImage:[backButtonImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
使用此方法:

  • 当在导航控制器中返回时,返回按钮项的转换与默认指示器相同(在iOS6下,从后退按钮滑开的偏离)
  • 在iOS6下,backButton会更改并保持其默认的iOS6行为
  • 我很高兴
确保您没有在视图控制器中调用此选项:

self.navigationController.navigationBar.tintColor = [UIColor redColor];
在iOS 7中,这将使导航栏着色,但也会使按钮不可见,但功能与您描述的一样