2011-03-08 102 views
3

我想要一个导航栏有一个后退按钮,它会转到最后一页,即使最后一页没有导航栏。我怎样才能插入一个后退按钮,并控制用户按下它时会发生什么?如何手动添加'后退'按钮到UINavigationBar?

+0

取决于'last'页面的含义。 – occulus 2011-03-08 01:14:57

+0

我想他是指前一页。 – florian 2011-03-08 01:17:39

回答

0

您需要将按钮从Interface Builder链接到您想要在按钮被点击时调用的方法。该方法应该看起来像这样- (IBAction)backAction。该方法的名称取决于您,但您必须将返回类型声明为IBAction,以便“接口”构建器知道可以将按钮链接到它。

0

导航栏不需要由导航控制器管理的视图控制器。而不是试图伪造后退按钮,使用导航控制器来管理两个视图控制器,并让第一个控制器隐藏导航栏。例如,您可以添加如下内容:

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

到控制器的-viewDidAppear方法。为第二个控制器做类似的事情,为隐藏参数传入NO以便再次显示。

在一般情况下,虽然,一个视图控制器可以添加一个返回按钮,导航栏有这样的代码(警告:从内存类型未经测试的代码,但应该让你开始):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction]; 
self.navigationItem.backBarButtonItem = backButton; 
[backButton release]; 

当轻击按钮时,按钮会将其动作(someAction)发送到其目标(自我)。

+0

尽管两个视图都在相同的视图控制器中。 – Andrew 2011-03-08 01:29:08

+0

你知道这不是框架的使用方式,对吧?如果你想要根据你的应用程序的设计走自己的方向,这取决于你 - 我向你展示了如何在导航项目中设置你自己的按钮,而且这应该工作。但Cocoa Touch强烈期待每个视图控制器管理一个“屏幕”。除非有其他重要的理由,否则无视这一惯例会让自己陷入一个不必要的痛苦世界。 – Caleb 2011-03-08 02:00:13

+0

@Caleb - 任何人都可以阅读这篇文章,这不是约定 – Sam 2011-09-09 15:05:42

-2
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

[button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; 

[button.titleLabel setFont:[UIFont boldSystemFontOfSize:11.0]]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_norm.png"] forState:UIControlStateNormal]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateSelected]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateHighlighted]; 

[button setTitle:@" Back" forState:UIControlStateNormal]; 

[button setTitle:@" Back" forState:UIControlStateSelected]; 

[button setTitle:@" Back" forState:UIControlStateHighlighted]; 

button.frame = CGRectMake(0, 0, 48, 30); 

UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button]; 

self.navigationItem.leftBarButtonItem = back; 

[button release]; 

[back release]; 
+1

请考虑对您的代码进行评论 – user1211929 2012-11-21 11:10:02

相关问题