prepareForSegue更改后退按钮标题

时间:2013-11-13 10:20:29

标签: ios objective-c storyboard segue

我有一个从按钮到新视图的推送segue,并希望更改后退按钮标题。你能帮我解决这段代码的错吗?

以下是代码段:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"settings"]) {
        NSLog(@"prepareForSegue: %@%@", segue.identifier, segue.destinationViewController);

        UIViewController *viewController = [segue destinationViewController];
        viewController.navigationItem.backBarButtonItem.title = @"Back";

        [segue.destinationViewController setTitle:@"WeekView"];
    }
}

setTitle确实有效。在此先感谢!!

3 个答案:

答案 0 :(得分:0)

UIViewController的视图尚未加载,因此您首先设置标题,然后发生视图加载代码,并将标题设置为默认标题。 尝试在目标视图控制器的viewDidLoad或viewWillAppear方法中设置后退按钮标题。

视图控制器的title属性已设置并有效,因为segue已经实例化了视图控制器本身。

答案 1 :(得分:0)

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]];通常它应该在viewDidLoad中完成,当segue到另一个视图控制器不是一个好主意时更改导航按钮标题。

答案 2 :(得分:0)

self.navigationItem.backBarButtonItem默认为nil。因此,如果您将标题设置为它,则不会发生任何事情,因为它影响了nil地址对象。这不会引发错误,因为objective-c允许消息传递nil对象。

答案:您必须创建自己的按钮对象才能设置它的标题。您可以initWithTitle或创建它,然后设置标题。(Explianed HEre

供您参考:

newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Home" style: UIBarButtonItemStyleBordered target: self action: @selector(Home:)];
    self.navigationItem.leftBarButtonItem=newBackButton;