我有一个奇怪的问题backBarButtonItem
。我想在整个应用程序中将其标题替换为“返回”并替换后退按钮在大多数情况下都有效,-viewDidLoad
但在其他视图中它不起作用并显示前一个视图的名称。有人有同样的问题吗?
PS替换的方法backBarButtonItem
是实例化anUIBarButtonItem
并将其设置为viewController.navigationIten.backBarButtonItem
属性的标准方法。
我有一个奇怪的问题backBarButtonItem
。我想在整个应用程序中将其标题替换为“返回”并替换后退按钮在大多数情况下都有效,-viewDidLoad
但在其他视图中它不起作用并显示前一个视图的名称。有人有同样的问题吗?
PS替换的方法backBarButtonItem
是实例化anUIBarButtonItem
并将其设置为viewController.navigationIten.backBarButtonItem
属性的标准方法。
backBarButtonItem
不设置当前视图中显示的后退按钮,它设置导航到当前视图的后退按钮,即下一个视图中的后退按钮。
这是有道理的,因为后退按钮的标题通常是前一个视图控制器的标题。
如果要直接在导航栏中设置左键,使用self.navigationItem.leftBarButtonItem
.
当您在分配下一个视图控制器对象后从当前视图推送视图时,只需放下面一行
YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
self.navigationItem.title=@"Back";
[self.navigationController pushViewController:objView animated:YES];
您的下一个视图将出现后退按钮.... :)
好吧,我终于找到了解决这个问题的方法。
如果您希望应用程序的任何 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];
}
通过这种方式,应用程序中的每个后退按钮都将具有相同的标题。
我希望这对其他人有帮助。