将项目添加到导航工具栏

时间:2010-11-28 16:24:27

标签: iphone

我有一个导航工具栏,我在其中以编程方式添加工具栏项,如下所示。工具栏显示正确,工具栏样式设置为黑色不透明。但工具栏上的按钮不显示。为什么?

    //Set up the toolbar
 [[[self navigationController] toolbar] setBarStyle:UIBarStyleBlackOpaque]; 
 UIBarButtonItem *myButtonItem = 
 [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(handleMyButton)];
 NSArray *myItems = [NSArray arrayWithObjects: myButtonItem,nil];
 [[self navigationController] setToolbarItems:myItems animated:NO];
 [myButtonItem release];

4 个答案:

答案 0 :(得分:26)

UINavigationController从当前可见视图控制器中提取应该用于导航栏和工具栏的按钮。这意味着您将要使用的按钮添加到视图控制器,而不是导航控制器。所以,如果你这样做,它应该可以正常工作:

[self setToolbarItems:myItems animated:NO];

将其与添加按钮添加到具有核心数据的基于导航的应用程序的默认模板中的导航栏的方式进行比较:

self.navigationItem.rightBarButtonItem = addButton;

这意味着当您按下新的视图控制器时,工具栏中的按钮将消失,然后在您弹回时再次出现。

答案 1 :(得分:0)

要将按钮指定给工具栏,您可以调用此方法

[toolbar setItems:];

而不是

[[self navigationController] setToolbarItems: animated:];

答案 2 :(得分:0)

您正在引用第一行而不是第四行中的navigationController所拥有的工具栏。似乎必要的修复是:

[[[self navigationController] toolbar] setToolbarItems:myItems animated:NO];

而不是您当前的第4行。

答案 3 :(得分:0)

通过将导航控制器对象的toolbarHidden属性设置为NO来显示工具栏。