3

在 XCode 4.5.1 创建一个带有导航控制器的故事板应用程序时,我很难为任何被推送的视图控制器设置 BACK 按钮。我正在使用 segue,并且视图控制器按预期显示。但是我想动态更改导航栏和后退按钮的名称并将其放在我的 ViewWillAppear 中:

    self.title = @"Select Songs";
    [self.backButton setTitle:@"Add"];

更改导航栏的标题,但后退按钮仍显示推送窗口的名称,而不是文本“添加”。

模拟指标都是推断的。我还在 Xcode 中的视图下方的黑色托盘中添加了一个 BarButtonItem,并将视图控制器的 backButton 连接到 backButton,但文本仍然没有出现。

添加以下日志消息也会产生一些有趣的东西:(但标题栏正在正确更新)

-(void) viewDidAppear:(BOOL)animated {
    NSLog(@"%s %@", __FUNCTION__, self.navigationItem.backBarButtonItem);
    NSLog(@"%s %@", __FUNCTION__, self.navigationController.navigationItem.backBarButtonItem);
}

2012-10-14 15:18:41.835 xxxx[2690:907] -[ViewController viewDidAppear:] (null)
2012-10-14 15:18:41.838 xxxx[2690:907] -[ViewController viewDidAppear:] (null)
4

2 回答 2

13

接受的答案是一个黑客,这是做到这一点的方法......

  1. 打开故事板
  2. 在 Document Outline 窗口中找到要返回到的 ViewController
  3. 单击该 ViewController 的导航项
  4. 在属性资源管理器中,将返回按钮值更改为您的自定义磁贴

就是这样,享受...

于 2014-03-10T15:32:42.170 回答
10

后退按钮将显示前一个视图的标题,如果没有设置标题,它将显示“返回”。

因此,在您的 prepareForSegue 方法中,您可以在推送下一个视图之前更改当前视图的标题。然后后退按钮将显示您设置的标题。

于 2012-11-16T11:10:40.043 回答