如何在Interface Builder中设置后以编程方式修改UIBarButtonItem视图?

时间:2011-04-13 18:10:15

标签: iphone cocoa-touch ios4 uibarbuttonitem uitoolbar

我在Interface Builder中创建了一个UIBarButton项,并将其链接到该类中的UIBarButton项属性。在Interface Builder中,它是 Style = Plain Identifier = Custom ,它的标题是空白的

在viewDidLoad方法的类文件中,我正在尝试向此UIBarButtonItem属性添加自定义视图。

E.g

UISegmentedControl *newButton = [[UISegmentedControl alloc] initWithItems:....];
newButton.momentary = YES;
newButton.segmentedControlStyle = UISegmentedControlStyleBar;
newButton.tintColor = [UIColor .....];

[self.myBarButtonItem setCustomView:newButton];

这导致 NOTHING 显示出来。那是为什么?

我已经读过如果我以编程方式创建UIBarButtonItem:

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:newButton];

然后将此BarButtonItem添加到工具栏 - 它可以工作。我的问题是我的工具栏上有很多东西,这个UIBarButton项目需要在工具栏的FAR右边,如果我不能直接在界面构建器中链接它,那么我必须构建所有我的工具栏项以编程方式获取我需要的布局。

当链接到在IB中创建的UIBarButtonItem时,有没有办法用customView执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:3)

要更改UIToolBar上的内容,请使用它的items属性。这应该回答你的问题:How to programmatically replace UIToolBar items built in IB

编辑:

我喜欢与它们合作的方式是在视图控制器类中为每个uibarbuttonitem制作一堆IBOutlets。在Interface Builder中,我将第一个(默认)项目放在工具栏上,通常作为工具栏子视图和所有这些项目,其余部分我将其作为顶级项目放在xib中(与连接到的视图相同的级别)视图控制器的.view属性出口)。这样我就不必以编程方式创建它们。并且仍然隐藏它们以便稍后将它们连接到uitolbar。

如果你使用这种方法而不是忘记在顶级IBOutlets上调用release如果你使用ivar IBOutlets(而不是@property IBOutlets)作为xib中未连接到KVC的所有顶级对象编辑参考。