当我将新的ViewController推送到导航控制器堆栈时,“后退”按钮是前一个控制器的标题。
如何将后退按钮中的文本更改为“后退”而不是默认的最后一个控制器名称?
答案 0 :(得分:27)
这是使用前一个“页面标题
之外的其他内容制作后退按钮的正确方法UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Your Title";
self.navigationItem.backBarButtonItem = barButton;
据我所知:
self.navigationItem.backBarButtonItem.title = @"Your Title";
会在上一页上显示导航栏的标题,这不是您想要的。
答案 1 :(得分:13)
我知道,问题很严重,但我找到了一个很好的解决方案。
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"back";
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;
从childView开始工作!经过iOS 7测试。
答案 2 :(得分:10)
您需要在导航控制器上创建自定义按钮。将以下代码放在Root View Controller的 viewDidLoad 中:
UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease];
tempButtonItem .title = @"Back";
self.navigationItem.backBarButtonItem = tempButtonItem ;
通过设置Root View Controller上的导航栏按钮,推送的视图显示相应的后退按钮。
答案 3 :(得分:2)
您可以在推送新视图控制器之前更改导航控制器的当前视图控制器的标题:
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";
}
}
答案 4 :(得分:1)
您实际上可以在主视图控制器的navigationItem
标题上设置标题。基本上每个UIViewController
都有一个小存根UINavigationItem
,其中包含有关如何在UINavigationController
内引用该视图的元数据。默认情况下,该元数据只会回退到UIViewController
本身。
假设'self'是在UIViewController
内可见的视图的UINavigationController
,请设置:
self.navigationItem.title = @"My Custom Title"
答案 5 :(得分:0)
您可以通过在原始控制器的“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"
}