1

我知道这看起来很奇怪,但我需要在第一个 navigationController 视图的导航栏上添加一个后退按钮。我试过这样:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Foo" style:UIBarButtonItemStyleBordered target:self                                                          action:@selector(foo:)]; 
self.navigationItem.backBarButtonItem=backButton;

如果我写的是 leftBarButtonItem 而不是 backBarButtonItem,则显示按钮。我的问题是我需要一个箭头按钮作为正常的后退按钮。这可能吗?

4

5 回答 5

1

通常这是开箱即用的,但有时对于模态视图/操作表,您可能需要它。在您实例化您的视图控制器并将其推送到导航控制器堆栈之前,请尝试

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Back" style: UIBarButtonItemStyleBordered target: nil action: nil];
    [[self navigationItem] setBackBarButtonItem: newBackButton];
    [newBackButton release];

    DetailViewController *detailVC = [[DetailViewController alloc]init];
    [self.navigationController pushViewController:detailVC animated:YES];
    [detailVC release];
于 2011-04-11T09:14:09.057 回答
0

我认为您不能在第一个 NavigationController 视图上执行此操作,因为您需要在推送子控制器之前在控制器中设置backBarButtonItem属性。此外,根据Apple 文档,必须的目标和操作是.backBarButtonItemnil

这个关于在 UIToolbar 上创建左箭头按钮的问题可能会让您了解如何使用自定义图像(用于 leftBarButtonItem)来解决此问题。

于 2010-09-27T16:39:37.747 回答
0

你当然可以这样做。您只需将leftBarButtonItem 的标题更改为back,然后您将获得一个带有标题的漂亮左箭头按钮。然后,您只需将选择器更改为在单击按钮时实际执行一个方法。所以@selector(foo:)

这里有一些关于如何实现上述目标的代码:

self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
self.navigationItem.leftBarButtonItem.title = @"Back";
self.navigationItem.leftBarButtonItem.target = self;
self.navigationItem.leftBarButtonItem.action = @selector(endTextEnteringButtonAction:);

让我知道这是否有帮助。

于 2010-09-27T16:47:54.057 回答
0

苹果文档 说:

当此导航项位于堆栈顶部项的正下方时,导航控制器会从此导航项派生导航栏的后退按钮。

因此,如果您的导航项是堆栈的顶部(正如我们在此处讨论的那样),您不能将后退按钮添加到导航控制器,因为没有任何地方可以导航回它,因为它是堆栈中的顶部项。

更新的答案:在我搜索之后,我发现在这些链接中导航控制器的根视图控制器中创建一个后退按钮

这很简单:)

[self.navigationItem setHidesBackButton:YES animated:YES];
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStyleBordered target:self action:@selector(initializeStuff)];

self.navigationItem.leftBarButtonItem = backButton;
于 2012-12-17T05:04:04.103 回答
0

或者您也可以执行以下操作 - 我更喜欢这种方法。我从另一个帖子得到这个。

使用我从http://www.teehanlax.com/blog/?p=447导出的以下 psd

http://www.chrisandtennille.com/pictures/backbutton.psd

然后我只创建一个自定义 UIView,我在工具栏项的 customView 属性中使用它。

对我来说效果很好。

希望能有所帮助

于 2010-09-28T13:08:57.710 回答