设置UINavigationController的工具栏项

时间:2009-08-22 09:16:15

标签: cocoa-touch interface-builder uinavigationcontroller uitoolbar uitoolbaritem

在iPhone OS 3.0中,您可以使用setToolbarItems:animated:方法设置UINavigationController的工具栏项。但是,这需要您传入一个UIToolbarItem数组。虽然我可以以编程方式创建这些工具栏项,但我宁愿在Interface Builder中创建它们。

考虑到这一点,我在“MyGreatViewController.xib”中创建了一个UIToolbar,并用想要的工具栏项填充它。然后,在“MyGreatViewController.m”中,我从工具栏中获取项目并将它们传递给setToolbarItems:animated:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setToolbarItems: [toolbar items]];
}

...其中toolbar是指向UIToolbar的IBOutlet。

这是一个好方法吗?有没有更好的方法来实现这一目标?我应该以编程方式创建项目吗?

2 个答案:

答案 0 :(得分:12)

我不知道这是否记录在任何地方,但我发现在Interface Builder中,如果你启用导航控制器的工具栏,你可以将条形项目拖动到视图控制器,它们将自动显示在导航控制器的工具栏。

例如,这是我们可以做的(在Snow Leopard上使用Xcode 3.2):

  1. 文件 - >新项目....选择基于导航的应用并创建项目。
  2. 在Interface Builder中打开MainWindow.xib
  3. 选择导航控制器,然后在“属性”检查器中,选中“显示工具栏”框。这将导致出现工具栏对象。
  4. 将“库”按钮项从“库”拖动到工具栏。它将出现在工具栏中。如果您检查NIB中的层次结构,您会看到此新项目是RootViewController的子项。
  5. 似乎添加为导航项子项的任何条形按钮项目都将显示在导航栏中,并且作为视图控制器的子项添加的任何条形按钮项目都将显示在工具栏中。

    (我偶然发现了这一点。如果有人能找到有关此行为的文档或其他任何信息,我想听听它。)

答案 1 :(得分:4)

这是一种完全可以接受的方式,但请记住,在iPhone上加载xib文件非常昂贵,并且在viewDidLoad方法中以编程方式创建工具栏项目可能会更快。