我对backBarButtonItem
有一个奇怪的问题。我想在整个“Back”应用程序中替换它的标题,并且替换后退按钮适用于大多数-viewDidLoad
事件,但在其他视图中它不起作用并显示上一个视图的名称。有人有同样的问题吗?
P.S。替换backBarButtonItem
的方法是实例化UIBarButtonItem
并将其设置为viewController.navigationIten.backBarButtonItem
属性的标准方法。
答案 0 :(得分:14)
backBarButtonItem
未设置当前视图中显示的后退按钮,它设置导航到当前视图的后退按钮,即下一个视图中的后退按钮
这是有道理的,因为后退按钮的标题通常是前一个视图控制器的标题。
如果要直接在导航栏中设置左按钮,请使用self.navigationItem.leftBarButtonItem
。
答案 1 :(得分:1)
当您在分配下一个viewcontroller对象后从当前视图中推送视图时,只需将波纹线放入
YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
self.navigationItem.title=@"Back";
[self.navigationController pushViewController:objView animated:YES];
您的下一个视图将显示后退按钮.... :)
答案 2 :(得分:1)
好吧,最后我找到了解决这个问题的方法。
如果你想要你的应用程序的任何backBarButtonItem具有相同的标题,一个好的方法是子类UINavigationController并覆盖- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
来替换后退按钮。
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BackButtonLabel", "")
style:UIBarButtonItemStyleDone
target:nil
action:nil];
viewController.navigationItem.backBarButtonItem = _backButton;
_backButton = nil;
[_backButton release];
[super pushViewController:viewController animated:animated];
}
通过这种方式,应用程序中的每个后退按钮都具有相同的标题。
我希望这会对其他人有所帮助。