3

我有一个奇怪的问题backBarButtonItem。我想在整个应用程序中将其标题替换为“返回”并替换后退按钮在大多数情况下都有效,-viewDidLoad但在其他视图中它不起作用并显示前一个视图的名称。有人有同样的问题吗?

PS替换的方法backBarButtonItem是实例化anUIBarButtonItem并将其设置为viewController.navigationIten.backBarButtonItem属性的标准方法。

4

3 回答 3

16

backBarButtonItem不设置当前视图中显示的后退按钮,它设置导航当前视图的后退按钮,即下一个视图中的后退按钮。

这是有道理的,因为后退按钮的标题通常是前一个视图控制器的标题。

如果要直接在导航栏中设置左键,使用self.navigationItem.leftBarButtonItem.

于 2012-05-16T16:06:58.153 回答
1

当您在分配下一个视图控制器对象后从当前视图推送视图时,只需放下面一行

YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
          self.navigationItem.title=@"Back";
            [self.navigationController pushViewController:objView animated:YES];

您的下一个视图将出现后退按钮.... :)

于 2012-05-16T17:28:23.847 回答
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];
}

通过这种方式,应用程序中的每个后退按钮都将具有相同的标题。

我希望这对其他人有帮助。

于 2012-05-17T07:44:20.540 回答