我有一个从按钮到新视图的推送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确实有效。在此先感谢!!
答案 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;