我有一个基于navigationController的应用程序.我想更改根视图控制器的后退按钮的标题.我在rootViewController的viewDidLoad方法中尝试了以下代码,但没有成功:
self.navigationItem.backBarButtonItem.title = @"Back";
有任何想法吗?
我通过创建自己的UIBarButtonItem而不是设置现有标题来获得成功:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton; [backButton release];
后退按钮的标题是:
上一个视图控制器的标题
上一个视图控制器的导航项后退按钮的名称
如果要为当前视图控制器的导航项设置后退按钮,则不会设置在当前视图中显示的按钮.实际上,如果从其中推送另一个视图控制器,则设置将使用的后退按钮.
可能已经回答了,但不是简单的.
self.navigationItem.backBarButtonItem
默认为零.因此,如果您将标题设置为它,则不会发生任何事情,因为它影响nil
地址对象.这不会引发错误,因为objective-c允许消息传递nil
对象.
解答:您必须创建自己的按钮对象才能设置它的标题.您可以initWithTitle
或创建它,然后设置标题.
PS - 如上所述,backBarButtonItem
唯一影响它的导航堆栈中的子视图被推到它上面.根据您的应用程序架构的方式,根视图不能再进一步弹出,也不能有后退按钮.虽然,你可以影响leftBarButtonItem
.
后退按钮从父视图控制器的标题中提取其文本.
在父视图控制器(点击后退按钮时显示的视图控制器)中,将其自己的标题设置为后退按钮上的所需文本.
例如,假设我们有一个RootViewController
班级.当我们在其表视图中单击一个单元格时,我们将推送一个实例SecondViewController
.我们希望SecondViewController
实例的后退按钮显示为"Home".
在RootViewController.m的viewDidLoad
方法中:
self.title = @"Home";
在SecondViewController.m的viewDidLoad
方法中:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton; [backButton release];
如果您希望后退按钮读取,"返回",则将父视图控制器的标题设置为@"Back"
;