我知道如何在代码中使用initWithCustomView创建和添加具有自定义视图的UIBarButtonItem。但是我更喜欢在Interface Builder中完成这样的操作。我似乎找不到任何方法来创建自定义的UIBarButtonItem并设置自定义视图。
好的,最终我终于想出了如何实现。
如果你将一个视图拖到 NavigationItem 上,那么将会创建一个 UIBarButtonItem,并使用该自定义视图对其进行初始化,并将其链接到右侧工具栏按钮。或者,您可以将视图拖到位于 Navigation Item 内部的工具栏按钮上。对于不在 Navigation Item 中的工具栏按钮,此方法将不起作用。
要创建带有自定义视图的左侧工具栏项目,则要复杂一些。Navigation Item 中的工具栏按钮是硬编码为右侧项目。我的做法是暂时将另一个 Navigation Item 添加到 xib 文件的顶级。然后,将视图拖到 Navigation Item 上,以创建此 Navigation Item 内部的工具栏按钮。将工具栏按钮项移出 Navigation Item(移至 xib 的顶级)。然后,您必须自己添加从真正的 Navigation Item 的 leftBarButtonItem outlet 到这个工具栏按钮项的链接。
正如用户486646在评论中所说,他的解决方案在Xcode 6中已经不再适用。稍微尝试了一下后,我找到了以下解决方法。
1)将工具栏拖入您的视图控制器场景中,而不是视图中,例如在Exit下面。
2)将自定义视图拖到(下方)工具栏中。这将创建一个UIBarButtonItem,其中包含嵌入式自定义视图。
3)现在将带有嵌入式自定义视图的UIBarButtonItem拖动到您真正想要它的位置(例如导航项或作为View Controller的工具栏项之一)。
4)删除第1步中创建的工具栏即可。