更改导航栏中的后退按钮的标题

时间:2014-03-23 11:03:30

标签: ios iphone cocoa-touch storyboard

根据这些问题的许多重复的例子,我似乎无法做到正确。

我有一个UINavigationViewController,它有一个LoginViewController作为rootViewController。在这里,我得到一个带有segue(push)的按钮到LoginInfoViewController。

在LoginInfoViewController.m中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //null
    NSLog(@"%@", self.navigationItem.backBarButtonItem);

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Test"
                                                                   style:UIBarButtonItemStyleDone
                                                                  target:nil
                                                                  action:nil];
    self.navigationItem.backBarButtonItem = backButton;

    //not null, still the back button says: "Back"
    NSLog(@"%@", self.navigationItem.backBarButtonItem);
}

enter image description here

2 个答案:

答案 0 :(得分:1)

在视图之前设置后退按钮的标题。因此,如果您偏离LoginViewController,则在切换到LoginInfoViewController之前在项目上设置后退按钮标题

示例:

viewDidLoad上的LoginViewController方法:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Go back" style: UIBarButtonItemStyleBordered target: nil action: nil];
[[self navigationItem] setBackBarButtonItem: newBackButton];

这意味着您要设置LoginViewController上的按钮,而不是LoginInfoViewController上的按钮。

答案 1 :(得分:1)

您需要设置要返回的控制器的backBarButtonItem,而不是您推送的控制器。将代码移至LoginViewController viewDidLoad方法。

导航控制器从堆栈中前一个控制器的backBarButtonItem派生导航栏的后退按钮。如果该项为nil,则它将使用title属性中的值。如果标题太长而不适合,导航栏可以替换字符串“Back”代替标题。 如果您的控制器具有自定义左栏按钮项,则导航栏将忽略显示自定义按钮的backButtonItem属性和标题。