[英]prepareForSegue change backbutton title
我将按钮从按钮推到新视图,并想更改后退按钮的标题。 您能帮我这段代码有什么问题吗?
这是一个代码片段:
- (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确实起作用。 提前致谢!!
UIViewController的视图尚未加载,因此您首先设置标题,然后执行视图加载代码,并将其设置为默认标题。 尝试在目标视图控制器的viewDidLoad或viewWillAppear方法中设置后退按钮标题。
视图控制器的title属性已设置并起作用,因为segue已经实例化了视图控制器本身。
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]];
通常应该在viewDidLoad中完成,当切换到另一个视图控制器时更改导航按钮标题不是一个好主意。
self.navigationItem.backBarButtonItem
默认为nil。 因此,如果为其设置标题,则不会发生任何事情,因为它会影响nil地址对象。 这不会引发错误,因为Objective-C允许传递nil个对象。
解答:您必须创建自己的按钮对象才能设置其标题。 您可以initWithTitle或创建它,然后再设置标题。( 此处为Explianed )
供你参考 :
newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Home" style: UIBarButtonItemStyleBordered target: self action: @selector(Home:)];
self.navigationItem.leftBarButtonItem=newBackButton;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.