UINavigationController上的后退按钮

时间:2010-09-27 14:13:23

标签: iphone uinavigationcontroller back-button

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

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

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

5 个答案:

答案 0 :(得分:1)

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

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];

答案 1 :(得分:0)

我认为你不能在第一个NavigationController视图上执行此操作,因为在推送子控制器之前,需要在控制器中设置backBarButtonItem属性。另外,根据Apple docs,目标& backBarButtonItem的操作必须为nil

关于creating a left-arrow button on a UIToolbar的这个问题可能会让您了解如何使用自定义图像解决此问题(对于leftBarButtonItem)。

答案 2 :(得分:0)

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

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

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

如果有帮助,请告诉我。

答案 3 :(得分:0)

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

使用我从http://www.teehanlax.com/blog/?p=447

派生的psd
  

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

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

适合我。

希望有所帮助

答案 4 :(得分:0)

Apple Document说:

当此导航项立即位于堆栈顶部项目下方时,导航控制器将从此导航项中导出导航栏的后退按钮。

所以如果您的导航项目是堆栈的顶部(正如我们在这里所说),您无法将后退按钮添加到导航控制器,因为没有地方可以导航回到它,因为它&#39 ; s是堆栈中的顶级项目。

更新的答案: 在我搜索之后,我找到了一个回合来在这些link

中导航控制器的根视图控制器中创建一个后退按钮

这非常简单:)

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

self.navigationItem.leftBarButtonItem = backButton;