7

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

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

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

...哪里toolbar是指 UIToolbar 的 IBOutlet。

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

4

2 回答 2

12

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

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

  1. File->New Project.... 选择Navigation-based Application并创建项目。
  2. MainWindow.xib在界面生成器中打开。
  3. 选择导航控制器,然后在属性检查器中,选中“显示工具栏”框。这将导致出现一个工具栏对象。
  4. 将条形按钮项从库中拖到工具栏上。它将出现在工具栏中。如果您检查 NIB 中的层次结构,您会看到这个新项目是RootViewController.

似乎作为导航项的子项添加的任何条形按钮项都将显示在导航栏中,并且作为视图控制器的子项添加的任何条形按钮项将显示在工具栏中。

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

于 2009-09-20T19:43:31.483 回答
4

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

于 2009-08-22T09:20:37.980 回答