使用push Segue更改项目标题

时间:2012-04-10 13:03:43

标签: ios5 uistoryboardsegue

我正在使用push segue在我的Storyboard中显示一个新的ViewController。默认情况下,推送的导航控制器上的后栏项具有“上一个”(底层)控制器的标题。

为了将后栏项的标题更改为例如“Back”,我在ViewController中实现了以下内容:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.backBarButtonItem.title = @"Back";
}

但这不会改变后栏项目的标题。我也尝试使用新创建的UIBarButtonItem,结果相同:后栏项不会改变。

另一种方法是在控制器中执行segue的prepareForSegue中设置后栏项。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{

    if ([[segue identifier] isEqualToString:@"pushViewController"]) {
        UIViewController *viewController = [segue destinationViewController];
        viewController.navigationItem.backBarButtonItem.title = @"Back";
    }
}

结果相同:后栏项目标题不会改变。那么如何轻松更改后栏项目的标题?提前谢谢!

3 个答案:

答案 0 :(得分:3)

要比Marco的答案更具体一点,你要找的是:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{        
    self.title = @"Back";
    // ...
}

请注意,这是恕我直言,非常烦人,因为你可能最终必须让一个完整的状态机围绕“self.title”应该在当前时刻,而不是只是在故事板中的每个场景知道后退按钮应该说什么。

答案 1 :(得分:2)

在源视图控制器中设置navigationItem.backBarButtonItem.title,而不是目标视图控制器。

答案 2 :(得分:0)

将后栏项目的标题添加到“故事板 - > VC-> NavigationItem”示例中作为“后退”, 当准备segue时,设置:

self.navigationItem.backBarButtonItem.title = @"Need a Title :)";