当前左边栏按钮的默认值是加载当前视图的视图的标题,换句话说,当按下按钮(后退按钮)时显示的视图。
我想把按钮上显示的文本更改为其他内容。
我试着把下面这行代码放在视图控制器的viewDidLoad方法中,但它似乎不起作用。
self.navigationItem.leftBarButtonItem.title = @"Log Out";
我该怎么办?
谢谢。
当前左边栏按钮的默认值是加载当前视图的视图的标题,换句话说,当按下按钮(后退按钮)时显示的视图。
我想把按钮上显示的文本更改为其他内容。
我试着把下面这行代码放在视图控制器的viewDidLoad方法中,但它似乎不起作用。
self.navigationItem.leftBarButtonItem.title = @"Log Out";
我该怎么办?
谢谢。
当前回答
我有一个父视图控制器,标题很长。这导致后退按钮的文本溢出到子视图控制器的标题中。
在尝试了一堆不同的解决方案后,这就是我最终所做的(扩展@john.k。doe方法):
使用Xcode 7.2, Swift 2
在故事板中,添加一个导航项到父视图控制器场景(不是子VC)
在新导航项的属性检查器上,在后退按钮字段中键入空格字符。稍后再详细介绍。
在父视图控制器中,添加以下代码:
代码片段:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case is ChildViewController:
navigationItem.backBarButtonItem?.title = ""
default:
navigationItem.backBarButtonItem?.title = "Full Parent Title"
}
}
解释:
后退按钮属于父视图控制器。Navigation Item为您提供了返回按钮的句柄,因此您可以在代码或故事板中设置标题。
注意:
如果你保留导航项返回按钮文本为默认空字符串,返回按钮标题将变成“返回”。
其他方法也管用,为什么要用这个呢?:
虽然在子视图控制器上重写back按钮标题是可能的,但在它已经在屏幕上短暂闪烁之前获得它的句柄是一个挑战。
有些方法构造一个新的后退按钮并覆盖现有的后退按钮。我确信它可以工作,并且在某些用例中可能是必要的。但我更喜欢在可能的情况下利用现有的api。
在某些情况下,改变父视图控制器的标题是最快的解决方案。但是,这会改变父标题,因此您必须管理状态。标签栏控制器也会变得混乱,因为标题更改会对标签栏项目标题产生副作用。
其他回答
我知道,这个问题很老了,但我找到了一个很好的解决方案。
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Custom Title";
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;
来自childView的作品!在iOS 7上测试。
好的。我个人讨厌所有这些选择。因此我想出了我自己的。
根据我所看到的信息。看起来Previous视图控制器控制着它自己的“Back”按钮,该按钮将显示在被推的视图控制器上。
我已经为控制器上想要更改Back Button的navigationItem创建了一个Lazy Load方法。
我的是一个邀请买家控制器
邀请买家是默认设置的文本。
但后退按钮需要是“邀请”
下面是我用来创建后退按钮的代码。
我把这段代码放在Controller's Implementatio (.m)文件的顶部,它会自动覆盖super的方法。
- (UINavigationItem *)navigationItem{
UINavigationItem *item = [super navigationItem];
if (item != nil && item.backBarButtonItem == nil)
{
item.backBarButtonItem = [[[UIBarButtonItem alloc] init] autorelease];
item.backBarButtonItem.title = @"Invite";
}
return item;
}
我觉得这是一种更优雅的方式。
我把这些代码放在一个地方,在需要时自动填充。
不需要在每个推送请求之前调用代码。
希望这能有所帮助
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc]
initWithTitle:@"Log out"
style:UIBarButtonItemStyleDone
target:nil
action:nil] autorelease];
你可以把它放在父控制器代码中的任何你喜欢的地方,这允许你为不同的子视图有不同的后退按钮。
对于那些使用故事板的人,只需选择父视图(不是持有目标视图的那个)视图控制器框架(确保你在导航栏上单击右键,然后打开属性检查器,在那里你会发现三个表单输入。第三个“后退按钮”是我们正在寻找的。
这样对我更好。试一试:
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];