根据这些问题的许多重复的例子,我似乎无法做到正确。
我有一个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);
}
答案 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
属性和标题。