iOS>> UINavigation项目后退按钮标题不会更改

时间:2013-08-26 13:40:29

标签: ios back-button uinavigationitem

我正在尝试为UINavigationController堆栈中的推送VC集设置BACK按钮。我使用下面的代码,它不起作用 - 我仍然将以前的VC名称显示为后退按钮标题。

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    self.title = @"VC Title";

    UIBarButtonItem* myBackButton = [[UIBarButtonItem alloc]
                                     initWithTitle:@"Back"
                                     style:UIBarButtonItemStyleBordered
                                     target:nil
                                     action:nil];

    self.navigationItem.backBarButtonItem = myBackButton;

}

任何?

7 个答案:

答案 0 :(得分:17)

父视图控制器中的

- (void)viewWillDisappear:(BOOL)animated
{
    self.title = @"Back";
}

- (void)viewWillAppear:(BOOL)animated
{
    self.title = @"Title of your navigation bar";
}

会做的伎俩

答案 1 :(得分:16)

尝试在父视图控制器的viewDidLoad

中设置标题
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];

self.navigationItem.leftBarButtonItem = customBarItem;

答案 2 :(得分:12)

来自Apple的文档:

导航栏左侧的条形按钮项允许导航回导航堆栈上的上一个视图控制器。导航控制器更新导航栏的左侧,如下所示:

如果新的顶级视图控制器具有自定义左栏按钮项,则显示该项。要指定自定义左栏按钮项,请设置视图控制器导航项的leftBarButtonItem属性。

如果顶级视图控制器没有自定义左栏按钮项,但前一个视图控制器的导航项在其backBarButtonItem属性中有一个有效项,则导航栏会显示该项。

如果任一视图控制器未指定自定义栏按钮项,则使用默认后退按钮,并将其标题设置为上一个视图控制器的title属性的值 - 即视图控制器在堆栈上降低。 (如果导航堆栈上只有一个视图控制器,则不显示后退按钮。)

希望这有帮助。

答案 3 :(得分:3)

self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithTitle:@"Put Any Title"
                                      style:UIBarButtonItemStyleBordered
                                     target:nil
                                     action:nil];

答案 4 :(得分:0)

将backBarButtonItem设置为上一个viewController的navigationItem。 检查此答案https://stackoverflow.com/a/25680043/111277。查看我的博文iOS Set Navigation Bar Back Button Title进行详细分析。

答案 5 :(得分:0)

另一个解决方案,非常快。

在基本视图控制器中覆盖此方法,每个推送的视图控制器上都有后退按钮。 (只是不要添加[super setTitle:title]

- (void)setTitle:(NSString *)title
{
    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];
    [lbl setText:title];
    [lbl setTextColor:[UIColor whiteColor]];
    [self.navigationItem setTitleView:lbl];
}

答案 6 :(得分:0)

用于故事板解决方案;

单击上一个视图控制器的导航项。然后单击右窗格中的属性检查器,然后在后退区域中写入“”或其他任何内容。这将告诉视图控制器在下一个(子)视图控制器中显示什么。希望它有所帮助

代码解决方案;

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"back off" style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];
[[self navigationItem] setBackBarButtonItem:customBarItem];