设置navigationController的工具栏项

时间:2011-02-21 14:06:04

标签: iphone

我正在尝试使用以下调用

为navigationController设置项目
NSArray *items = [NSArray arrayWithObjects: shareButton, nil];
[self.navigationController.toolbar setItems:items animated:NO];

这对工具栏没有任何补充。

我可以使用

隐藏和显示工具栏
[self.navigationController setToolbarHidden:NO];

但是不能让这些物品出现。

如何设置项目。 ?

更新

enter image description here

1 个答案:

答案 0 :(得分:16)

工具栏是只读属性。您可以通过以下方式设置工具栏:

  

工具栏关联的自定义工具栏   与导航控制器。   (只读)

     

@属性(非原子,只读)   UIToolbar *工具栏讨论这个   property包含对引用的引用   由...管理的内置工具栏   导航控制器。访问这个   工具栏仅供客户使用   想要提交一份行动表   从工具栏中。你不应该   直接修改UIToolbar对象。

     

管理此工具栏的内容   通过自定义视图完成   与此相关的控制器   导航控制器。对于每个视图   导航堆栈上的控制器,   您可以指定一组自定义工具栏   使用的项目   setToolbarItems:animated:方法   的UIViewController。

编辑:所以你应该这样做:

[self setToolbarItems:items animated:NO];

编辑:以下是添加右栏按钮项的方法:

- (void) addRightButton
{
    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [rightBtn setImage:[UIImage imageNamed:@"mybutton.png"] forState:UIControlStateNormal];
    rightBtn.frame = CGRectMake(0, 0, 70, 40 );
    [rightBtn addTarget:self action:@selector(myButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *rightBarBtn = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
    self.navigationItem.rightBarButtonItem = rightBarBtn;
}

编辑:要以编程方式创建灵活/固定空间项目,请使用:

- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action

可设置的systemItem值包括UIBarButtonSystemItemFlexibleSpace和UIBarButtonSystemItemFixedSpace。查看UIBarButtonItem类的文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html

编辑:问题得到澄清。底部的工具栏与navigationItem或导航控制器无关,它只是一个UIToolbar。你需要在IB中完全设置它或在你的班级设置一个插座并在代码中设置/完成它。