2012-01-26 63 views
1

我在文档中看到,现在您可以在UINavigationController中为leftBarButtonItems和rightBarButtonItems创建一个项目数组,并且不必创建UIToolBar并将其设置为按钮。我基本上需要在navigationController的“后退”按钮旁边的左侧的“主页”按钮。因此,它看起来像:在iOS 5中使用UINavigationController设置leftBarButtonItems

BackButtonFromNavigationController HomeBarButtonItem 

我不知道我是如何得到的导航栏的后退按钮进入我的阵列一次创建我为homeButton。我想这一点,但我只看到了navigationController的backBarButton:

if ([self.navigationItem respondsToSelector:@selector(setLeftBarButtonItems:)]) { 
    UIBarButtonItem *hButton = [self createHomeButton]; 
    self.navigationController.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:self.navigationItem.backBarButtonItem, hButton, nil]; 
} 

每个编辑smparkes响应:

if ([self.navigationItem respondsToSelector:@selector(leftItemsSupplementBackButton)]) { 
    self.navigationItem.leftItemsSupplementBackButton = YES; 
    self.navigationItem.leftBarButtonItem = homeBBI; 
} 

我知道homeBBI正确,因为我有它创造了我UIToolBar作为rightBarButtonItem之前的iOS 5.现在我只是想把它移到左边,我用同样的按钮来查看它是否会工作,但它似乎仍然不起作用...

回答

8

不要把后退按钮放在阵列。使用leftItemsSupplementBackButton使按钮阵列添加到而不是替换后退按钮。一旦你这样做了,它听起来不像你甚至需要一个数组。

我想你会看到你所看到的行为,因为你的按钮数组是空的。您正在添加self.navigationItem.backBarButtonItem,这可能是nil。您希望控制器中的后退按钮位于导航堆栈的更深处,而不是当前控制器的后退按钮。

+0

我更新了我的代码段,但我的按钮仍然不显示。 – Crystal 2012-01-27 00:45:31

+0

它看起来没问题,只要homeBBI不是零(你仔细检查)?否则,不确定。 – smparkes 2012-01-27 00:55:47

+0

是的,我检查了它不零,仍然不显示不幸。将继续检查。尽管谢谢你的回应! – Crystal 2012-01-27 16:20:58

0

我有同样的问题。在我的情况下,隐藏其他按钮的原因是我一直在使用自定义标题视图。随着文档状态:

如果没有足够的空间的阵列,那些将重叠标题视图(如果存在)或在杆的右侧的按钮在显示所有的项目显示。

更改自定义标题视图的大小的确解决了我的问题。也许这个提示会帮助别人。