我在文档中看到,现在您可以在UINavigationController中为leftBarButtonItems和rightBarButtonItems创建一个项目数组,而不必创建UIToolBar并将其设置为按钮。我基本上想在navigationController的“后退”按钮旁边的左侧有一个“Home”按钮。所以它看起来像:
BackButtonFromNavigationController HomeBarButtonItem
我不确定在创建HomeButton后如何将navigationBar的backButton放入我的数组中。我尝试过这个,但我只看到了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中正确创建的,因为它在iOS 5之前是rightBarButtonItem。现在我只是想把它移到左边,我用同样的按钮看它是否会起作用但是它似乎还没有工作......
答案 0 :(得分:8)
不要将后退按钮放在数组中。使用leftItemsSupplementBackButton
使按钮数组添加到而不是替换后退按钮。一旦你完成了这一点,听起来你甚至不需要一个阵列。
我认为你正在获得你所看到的行为,因为你的按钮数组是空的。您正在添加可能为self.navigationItem.backBarButtonItem
的{{1}}。您希望控制器中的后退按钮在导航堆栈中更深一些,而不是当前控制器的后退按钮。
答案 1 :(得分:0)
我遇到了同样的问题。在我的情况下隐藏其他按钮的原因是我一直在使用自定义标题视图。正如文档所述:
如果没有足够的空间显示数组中的所有项目,则不会显示与标题视图(如果存在)或栏右侧按钮重叠的项目。
更改自定义标题视图的大小确实解决了我的问题。也许这个暗示会帮助别人。