当前左边栏按钮的默认值是加载当前视图的视图的标题,换句话说,当按下按钮(后退按钮)时显示的视图。
我想把按钮上显示的文本更改为其他内容。
我试着把下面这行代码放在视图控制器的viewDidLoad方法中,但它似乎不起作用。
self.navigationItem.leftBarButtonItem.title = @"Log Out";
我该怎么办?
谢谢。
当前左边栏按钮的默认值是加载当前视图的视图的标题,换句话说,当按下按钮(后退按钮)时显示的视图。
我想把按钮上显示的文本更改为其他内容。
我试着把下面这行代码放在视图控制器的viewDidLoad方法中,但它似乎不起作用。
self.navigationItem.leftBarButtonItem.title = @"Log Out";
我该怎么办?
谢谢。
当前回答
也许我过于简单了,但从苹果的文档中,措辞是:
如果一个自定义栏按钮项没有被任何一个视图控制器指定,则使用一个默认的返回按钮,并且它的标题被设置为前一个视图控制器的title属性的值——也就是说,在堆栈的下一层的视图控制器。
上面标记为正确的解决方案设置了来自父控制器的默认按钮项。这是正确的答案,但我正在通过改变自我来解决问题。在将新控制器推送到NavigationController堆栈之前,UIViewController的title属性。
这将自动更新后退按钮在下一个控制器上的标题,只要你设置了self。标题回到什么它应该在viewWillAppear我不能看到这个方法造成太多的问题。
其他回答
这应该放在调用名为NewTitle的ViewController的方法中。 就在push或popViewController语句之前。
UIBarButtonItem *newBackButton =
[[UIBarButtonItem alloc] initWithTitle:@"NewTitle"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];
[[self navigationItem] setBackBarButtonItem:newBackButton];
[newBackButton release];
在Xcode 4.5中使用storyboard,到目前为止,当Back按钮的值不需要动态改变时,我发现最简单的解决方案是使用“Back button”字段与视图控制器的导航项相关联,你想让“Back”按钮表示其他内容。
例如,在下面的截图中,我想要视图控制器的后退按钮(s),我推有“后退”作为后退按钮的标题。
当然,如果你每次都需要返回按钮显示稍微不同的内容,这就行不通了……这里有所有其他的解决方案。
根据UINavigationBar>backItem的文档
如果最上面导航项的leftBarButtonItem属性为 Nil,导航栏显示一个返回按钮,该按钮的标题是派生的 属性中的项。
但是设置backItem。backBarButtonItem在第一次viewWillAppear时不起作用。设置topItem。backBarButtonItem只适用于第一次viewWillAppear。因为navigationBar。topItem仍然指向previousViewController.navigationItem。在viewWillLayoutSubviews中,topItem和backItem被更新。在第一次viewWillAppear之后,我们应该设置backitem。backbarbuttonitem。
答:设置一个backBarButtonItem到前一个viewController的navigationItem,无论何时何地在你的当前viewController(顶部viewController)。你可以在viewWillAppear或viewDidLoad中使用这段代码。查看我的博客文章iOS设置导航栏返回按钮标题的详细分析。
NSArray *viewControllerArray = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousIndex = [viewControllerArray indexOfObject:self] - 1;
if (previousIndex >= 0) {
UIViewController *previous = [viewControllerArray objectAtIndex:previousIndex];
previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:backButtonTitle
style:UIBarButtonItemStylePlain
target:self
action:nil];
}
这对我来说是以前发布的答案的“简化”版本。
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
backButton.title = @"Go Back";
self.navigationItem.backBarButtonItem = backButton;
记住把代码放在父视图控制器(例如,有你的表格视图或UITableViewController的视图),而不是子视图或细节视图(例如,UIViewController)。
你可以像这样简单地本地化返回按钮字符串:
backButton.title = NSLocalizedString(@"Back Title", nil);
好的,就这么办。如果你有一个视图控制器“first”,你通过按按钮等方式导航另一个视图控制器“second”,你需要做一些工作。 首先,你需要在“second”视图控制器的ViewDidLoad方法中创建一个BarButtonItem,如下所示;
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(OnClick_btnBack:)];
self.navigationItem.leftBarButtonItem = btnBack;
[btnBack release];
之后,你需要在相同的.m文件中为“btnBack”操作编写代码;
-(IBAction)OnClick_btnBack:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
//[self.navigationController pushViewController:self.navigationController.parentViewController animated:YES];
}
这是所有。