0

我有一个从按钮到新视图的推送,并想更改后退按钮标题。你能帮我看看这段代码有什么问题吗?

这是一个代码片段:

- (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 确实有效。提前致谢!!

4

3 回答 3

0

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

视图控制器的 title 属性已设置并且可以工作,因为 segue 已经实例化了视图控制器本身。

于 2013-11-13T10:26:15.967 回答
0

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

解答: 您必须创建自己的按钮对象才能设置它的标题。您可以 initWithTitle 或创建它,然后设置标题。(在这里解释

供你参考 :

newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Home" style: UIBarButtonItemStyleBordered target: self action: @selector(Home:)];
    self.navigationItem.leftBarButtonItem=newBackButton;
于 2013-11-13T10:29:38.740 回答
0

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

于 2013-11-13T10:27:16.683 回答