我在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执行此操作?
谢谢!
答案 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的所有顶级对象编辑参考。