更改UIBackButtonItem标题

Alp*_*sta 30 cocoa-touch

我有一个基于navigationController的应用程序.我想更改根视图控制器的后退按钮的标题.我在rootViewController的viewDidLoad方法中尝试了以下代码,但没有成功:

self.navigationItem.backBarButtonItem.title = @"Back";
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Chr*_*die 52

我通过创建自己的UIBarButtonItem而不是设置现有标题来获得成功:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
Run Code Online (Sandbox Code Playgroud)

  • 是的,它确实.您应该在"父"视图控制器上设置它,后退按钮将返回到该控制器. (25认同)
  • 不,它是一个完全正常的回头按钮,就像一个指向左侧的箭头. (3认同)

Mih*_*ian 48

后退按钮的标题是:

  1. 上一个视图控制器的标题
  2. 上一个视图控制器的导航项后退按钮的名称

如果要为当前视图控制器的导航项设置后退按钮,则不会设置在当前视图中显示的按钮.实际上,如果从其中推送另一个视图控制器,则设置将使用的后退按钮.

  • 这是令人困惑但重要的事情.当设置控制器导航项的"后退按钮"时,实际上是将控制器显示的后退按钮的标题设置为控制器层次结构的一级,即控制器按下后退按钮的控制器.重新设定. (3认同)

Bre*_*den 25

可能已经回答了,但不是简单的.

self.navigationItem.backBarButtonItem默认为零.因此,如果您将标题设置为它,则不会发生任何事情,因为它影响nil地址对象.这不会引发错误,因为objective-c允许消息传递nil对象.

解答:您必须创建自己的按钮对象才能设置它的标题.您可以initWithTitle或创建它,然后设置标题.

PS - 如上所述,backBarButtonItem唯一影响它的导航堆栈中的子视图被推到它上面.根据您的应用程序架构的方式,根视图不能再进一步弹出,也不能有后退按钮.虽然,你可以影响leftBarButtonItem.


Ros*_*one 5

后退按钮从父视图控制器的标题中提取其文本.

在父视图控制器(点击后退按钮时显示的视图控制器)中,将其自己的标题设置为后退按钮上的所需文本.

例如,假设我们有一个RootViewController班级.当我们在其表视图中单击一个单元格时,我们将推送一个实例SecondViewController.我们希望SecondViewController实例的后退按钮显示为"Home".

RootViewController.mviewDidLoad方法中:

self.title = @"Home";
Run Code Online (Sandbox Code Playgroud)

SecondViewController.mviewDidLoad方法中:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];    
Run Code Online (Sandbox Code Playgroud)

如果您希望后退按钮读取,"返回",则将父视图控制器的标题设置为@"Back";