10

我正在尝试为 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;

}

任何人?

4

7 回答 7

17

在父视图控制器中:

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

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

会成功的

于 2013-11-07T10:39:06.500 回答
16

尝试在父视图控制器中设置标题viewDidLoad

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

self.navigationItem.leftBarButtonItem = customBarItem;
于 2013-08-26T13:43:42.963 回答
13

来自 Apple 的文档:

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

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

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

如果任何一个视图控制器都没有指定自定义条形按钮项,则使用默认的后退按钮,并将其标题设置为前一个视图控制器的 title 属性的值——即视图控制器向下一层堆栈。(如果导航堆栈上只有一个视图控制器,则不会显示返回按钮。)

希望这可以帮助。

于 2013-08-26T13:47:27.290 回答
3
self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithTitle:@"Put Any Title"
                                      style:UIBarButtonItemStyleBordered
                                     target:nil
                                     action:nil];
于 2014-02-20T11:24:40.657 回答
0

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

于 2014-08-22T09:47:21.013 回答
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];
}
于 2015-08-17T14:14:22.430 回答
0

用于故事板解决方案;

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

用于代码解决方案;

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"back off" style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];
[[self navigationItem] setBackBarButtonItem:customBarItem];
于 2015-12-07T14:15:02.123 回答