无法更改navigationitem后退按钮的文本和文本颜色

时间:2011-07-24 16:43:18

标签: iphone objective-c ios uinavigationbar back-button

我正在尝试使用下面的代码设置导航栏的后退按钮文本颜色(红色)。 (注意:下面的代码已经在'previous'视图控制器中,在本例中是'Popular'视图控制器:

//Customize Back button
UIView *backButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 40)];
UILabel *backButtonLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 40)];
backButtonLabel.text = @"back";
backButtonLabel.textColor = [UIColor colorWithHexString:@"cf212a"];
[backButtonView addSubview:backButtonLabel];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:backButtonView];
self.navigationItem.backBarButtonItem = backButton;

然而,我没有得到我想要的效果。我仍然在后面的按钮中获得默认的白色文本。文本也不会更改为“后退”

enter image description here

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:4)

这是因为backbuttonitem是一个uibarbuttonitem,将在下一个视图控制器上看到,它将被推到当前视图控制器的顶部而不是当前视图控制器。

如果你想设置当前视图的后退按钮,就像你在上面的代码中所做的那样,而不是仅仅将代码移动到它前面显示的视图控制器(在堆栈下面)。这样当你按下要显示在上一个视图控制器中设置的自定义后退按钮的视图控制器。这是因为后退按钮属于上一个视图控制器,它将推动您的新视图控制器...

答案 1 :(得分:1)

我相信只有title属性在后退按钮项中很重要;这是让你在中间有一个很长的标题,在后面的按钮中有一个较短的标题。

添加自定义“后退按钮”的最简单方法是设置UINavigationItem.leftBarButtonItem;你必须适当地设定目标/行动。

答案 2 :(得分:1)

我只是组建了一个简单的UIViewController子类,它添加了一个可自定义的后退按钮,允许您更改文本颜色。它基本上添加了一些willAppear / willDisappear逻辑,以便在使用UINavigationController属性时leftBarButtonItem的方式为后退按钮设置动画。

https://github.com/typeoneerror/BBCustomBackButtonViewController

答案 3 :(得分:1)

这对我有用。

使用此功能,您可以更改所有导航按钮的颜色:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

用以下内容替换redColor以调整按钮的颜色:

colorWithRed:0/255.0 green:144/255.0 blue:200/255.0 alpha:1.0// pick your color using this

请务必将其放入推送的视图控制器中。不是您想要查看此后退按钮颜色的视图控制器。像罗宾解释的那样。

答案 4 :(得分:1)

我发现在全球或本地设置它的最佳方式是

    [[UIBarItem appearance] setTitleTextAttributes:
         [NSDictionary dictionaryWithObjectsAndKeys:
         [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, 
         [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, 
         [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
         [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, 
      nil] 
        forState:UIControlStateNormal];

答案 5 :(得分:0)

self.navigationItem.backBarButtonItem.tintColor = [UIColor blackColor];