回答

13

下面是创建一个自定义leftBarButtonItem一个例子:

UIImage *buttonImage = [UIImage imageNamed:@"backbutton.png"]; 
UIButton *aButton = [UIbutton buttonWithType:UIButtonTypeCustom]; 
[aButton setImage:buttonImage forState:UIControlStateNormal]; 
aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height); 
[aButton addTarget:self action:@selector(aSelector) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton]; 
self.navigationItem.leftButtonItem = backButton; 

希望它可以帮助...

编辑:

尝试......

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"yourimage.jpg"] style:UIBarButtonItemStyleBordered target:self action:@selector(aSelector)]; 
self.navigationItem.leftBarButtonItem = backButton; 

我不记得按钮是什么类型的按钮,尝试将默认样式更改为其他。祝你好运!

+0

谢谢,我会用这个,如果有没有其他方式。但我希望使它更加灵活(当它仅取决于backBarButtonItem的图像和样式而不依赖于图像资源时) – Gargo

+0

我已编辑答案 – karse23

+0

第二个示例更糟,因为sdk doesn'允许一次为该按钮设置图像和标题。所以我应该为所有的标签制作不同的图像。你想给我建议吗? – Gargo

0

只需创建一个自定义barbuttonitem并使用类似于后退按钮项的图片对其进行自定义。 您可以从导航堆栈中的视图控制器获取文本。

然后把手水龙头,以实现所需效果

+1

你可以把这里更多具体的例子? – Gargo

0

您可以将您的自定义视图作为栏按钮到您的导航控制器,是这样的:对于更详细的解释

UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithCustomView:yourCustomizedControl]; 
[yourCustomizedControl release]; 

self.navigationItem.leftBarButtonItem = customItem; 
[customItem release]; 

检查this Apple documentation,如果你想。

+0

正如我理解你我需要更改backBarButtonItem标题,然后我需要将其转换为UIView并将其分配给一个leftBarButtonItem。但是如何? – Gargo

+0

我会做的是创建一个简单的UIButton,按照我希望的样子自定义它,我的意思是给它一个背景图像,一个标题等等。您可以找到一个类似于backBarButtonItem的图像并分配这个到您新创建的UIButton。然后为这个UIButton分配一个目标动作,以便它在你点击时做你想做的事情。最后,将这个UIButton分配给你的nav的leftBarButton。控制器如上所述。 – aslisabanci

+0

现在我认为最好删除leftBarButtonItem并将其函数放入viewWillDisapear – Gargo

0

这里是一个黑客添加回状按钮:

UINavigationItem* backNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Back"]; 
[_navigationBar pushNavigationItem:backNavigationItem animated:NO]; 
[backNavigationItem release]; 

您可以添加更多的项目(例如如标题,右键)这样说:

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 
navigationItem.rightBarButtonItem = // Some UIBarButtonItem 
[_navigationBar pushNavigationItem:navigationItem animated:NO]; 
[navigationItem release]; 
+0

它会被应用程序商店接受吗? – Gargo

+0

我从来没有因为这个拒绝 – willy

+0

它看起来像这个解决方案使用“自定义”UINavigationBar('_navigationBar = [[UINavigationBar分配] initWithFrame:...]; [self.view addSubview:_navigationBar]; _navigationBar.items = ...; _navigationBar.delegate = self')而不是'self.navigationController.navigationBar'。你需要适当地实现UINavigatonBarDelegate。 –