改变的UINavigationController backItem冠军时,奇怪的行为
-
27-09-2019 - |
题
我改变在以下列方式的控制器的viewDidAppear后退按钮项标题:
self.navigationController.navigationBar.backItem.title = @ “上一页”;
有适当变化的丝毫不差,但我有一个奇怪的行为。当我选择“上一”按钮,它改变了控制器,其在向上堆叠(即父控制器现在具有标题“上一个”。
的丝毫不差你现在为什么会这样?
解决方案
当您使用的导航控制器,主叫[自的setTitle:@“标题”];栈中的任何视图控制器的内部将设置导航栏标题。这也是当你推一个新的视图控制器后退按钮默认使用的标题。显然,从你正在经历什么,明确设置backItem的标题,也将其设置为导航栏标题覆盖上一个视图控制器无论在视图控制器调用-setTitle指定的。
您将可能是最好只在您的导航堆栈的视图控制器中管理的标题。当你去推一个新的视图控制器,这样做:
[self setTitle:@"Previous"];
NextViewController *controller = [[NextViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;
现在,当下一个视图控制器显示,与说“上一页”返回按钮。现在,你只需要改回不论其真正的冠军应该在-viewWillAppear:
- (void)viewWillAppear:(BOOL)animated;
{
[self setTitle:@"Real Title"];
[super viewWillAppear:animated];
}
有可能会感到有点哈克,但它不是试图重写导航栏功能更好。与摔跤导航栏/导航控制器堆叠可以证明是非常令人沮丧。
最好的问候。
不隶属于 StackOverflow