当我将新的 ViewController 推到导航控制器堆栈上时,“后退”按钮是前一个控制器的标题。
如何将后退按钮中的文本更改为“返回”而不是默认的最后一个控制器名称?
当我将新的 ViewController 推到导航控制器堆栈上时,“后退”按钮是前一个控制器的标题。
如何将后退按钮中的文本更改为“返回”而不是默认的最后一个控制器名称?
这是使用前一页标题以外的内容制作后退按钮的正确方法
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Your Title";
self.navigationItem.backBarButtonItem = barButton;
据我了解:
self.navigationItem.backBarButtonItem.title = @"Your Title";
将使上一页上导航栏的标题这不是您想要的。
我知道,这个问题很老了,但我找到了一个很好的解决方案。
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"back";
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;
从 childView 工作!使用 iOS 7 测试。
您需要在导航控制器上创建一个自定义按钮。将以下代码放入根视图控制器的viewDidLoad中:
UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease];
tempButtonItem .title = @"Back";
self.navigationItem.backBarButtonItem = tempButtonItem ;
通过在 Root View Controller 上设置导航栏按钮,推送的视图会显示相应的后退按钮。
您可以在推送新的视图控制器之前更改导航控制器的当前视图控制器的标题:
self.title = @"Custom Title";
[self pushViewController: newViewController ...];
and in the navigation controller's delegate class
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if([viewController class] == [OldViewController class]) {
viewController.title = @"Your previous title";
}
}
您实际上可以在主视图控制器的标题上设置navigationItem
标题。基本上每个UIViewController
都有一个小存根UINavigationItem
,其中包含有关如何在UINavigationController
. 默认情况下,该元数据只是回退到UIViewController
自身。
假设 'self' 是在, 集UIViewController
内可见的视图UINavigationController
:
self.navigationItem.title = @"My Custom Title"
您可以通过在原始控制器的“viewWillDisappear”函数中设置后退按钮标题来实现这一点,如下所示:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for this view
self.navigationItem.title = "My Title"
}
override func viewWillDisappear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for back button in next view
self.navigationItem.title = "Back"
}