对于我的一个视图控制器(扩展UITableViewController),我需要将其后退按钮文本配置为“Back”。但后退按钮仍显示父视图控制器的标题(默认值)。
- (void)viewDidLoad
{
...
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
}
答案 0 :(得分:3)
您需要在视图控制器上设置后退按钮,将该类推到堆栈上,例如创建并推送正在显示的类的控制器
View Controller Programming Guide for iOS的文档建议UINavigationItem
保留在Navigation Item Stack
中,它为堆栈中的当前项提供标题和按钮。
重要(我在[])中添加了位
虽然大多数导航栏的内容是从[导航堆栈]中最顶层的导航项获得的,但是仍然保留了指向[前一项中的项目]的后退项目的指针,以便后退按钮(带有标题)可以创建上一项)。
查看Configuring the Navigation Item Object
部分下的文档,有一个图表显示堆栈和backItem
指向堆栈顶部项目下方的项目。在您的情况下,堆栈中的顶部项目将引用您正在显示的类的UINavigationItem
,backItem
将是指向推送它的类的指针。
<强> NB 强>
在文档中查看该部分,图像值得千言万语
答案 1 :(得分:3)
试试这个:
UIButton* backButton = [UIButton buttonWithType:101];
[backButton addTarget:self action:@selector(popView:) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backItem;
self.navigationItem.backBarButtonItem.enabled = NO;
self.navigationItem.leftBarButtonItem.enabled = YES;
[backButton release];
你需要实现一个简单的方法popView,如下所示:
-(IBAction)popView:(id)sender
{
[self.navigationController popViewControllerAnimated:NO];
}
答案 2 :(得分:0)
这是来自最新UINavigationController类引用的更多信息,它告诉您如何更改“推”或“推”控制器中的按钮(我添加了链接,但Apple继续微妙地移动内容方法。请使用您最喜欢的搜索引擎)。
总结:如果在push(即上一个)控制器中配置后退按钮,则可以访问backBarButtonItem。无论下一个控制器的类型如何,这都非常适合配置一致命名的后退按钮。如果您希望/需要在推送(即当前)控制器中更改它,则需要访问leftBarButtonItem。
相关文字如下:
导航栏左侧的条形按钮项允许 导航回导航上的前一个视图控制器 堆。导航控制器更新了左侧 导航栏如下:
如果新的顶级视图控制器具有自定义左栏按钮项,则显示该项。指定自定义左栏按钮 item,设置视图控制器的leftBarButtonItem属性 导航项目。
如果顶级视图控制器没有自定义左栏按钮项,而是前一个视图控制器的导航项 在其backBarButtonItem属性(导航栏)中有一个有效项 显示该项目。
如果任一视图控制器未指定自定义栏按钮项,则使用默认后退按钮,并将其标题设置为 上一个视图控制器的title属性的值 - 即 视图控制器在堆栈上向下一级。 (如果只有一个 在导航堆栈上查看控制器,不显示后退按钮。)