你能在界面构建器中创建带自定义视图的UIBarButtonItem吗?

12
我知道如何在代码中使用initWithCustomView创建和添加具有自定义视图的UIBarButtonItem。但是我更喜欢在Interface Builder中完成这样的操作。我似乎找不到任何方法来创建自定义的UIBarButtonItem并设置自定义视图。
2个回答

18

好的,最终我终于想出了如何实现。

如果你将一个视图拖到 NavigationItem 上,那么将会创建一个 UIBarButtonItem,并使用该自定义视图对其进行初始化,并将其链接到右侧工具栏按钮。或者,您可以将视图拖到位于 Navigation Item 内部的工具栏按钮上。对于不在 Navigation Item 中的工具栏按钮,此方法将不起作用。

要创建带有自定义视图的左侧工具栏项目,则要复杂一些。Navigation Item 中的工具栏按钮是硬编码为右侧项目。我的做法是暂时将另一个 Navigation Item 添加到 xib 文件的顶级。然后,将视图拖到 Navigation Item 上,以创建此 Navigation Item 内部的工具栏按钮。将工具栏按钮项移出 Navigation Item(移至 xib 的顶级)。然后,您必须自己添加从真正的 Navigation Item 的 leftBarButtonItem outlet 到这个工具栏按钮项的链接。


2
将近4年后,我想要做同样的事情,但我的解决方法不再起作用。 - user486646
找到其他解决方案了吗? - Bhumit Mehta
1
由于Apple的缘故,在Xcode 6上这不再起作用了。为什么要简化呢,如果他们可以把事情搞得更复杂呢? - Duck
这在我的Xcode 7.3中有效。我将一个UIButton拖到导航项中,它被包装在UIBarButtonItem中,现在我将该UIBarButtonItem放置在所需的位置(例如底部UIToolbar)。 - nacho4d

13

正如用户486646在评论中所说,他的解决方案在Xcode 6中已经不再适用。稍微尝试了一下后,我找到了以下解决方法。

1)将工具栏拖入您的视图控制器场景中,而不是视图中,例如在Exit下面。

2)将自定义视图拖到(下方)工具栏中。这将创建一个UIBarButtonItem,其中包含嵌入式自定义视图。

3)现在将带有嵌入式自定义视图的UIBarButtonItem拖动到您真正想要它的位置(例如导航项或作为View Controller的工具栏项之一)。

4)删除第1步中创建的工具栏即可。


1
很遗憾,这对我来说在Xcode 7.2上没有起作用 :( - Lysann Schlegel
1
这在我的Xcode 12.5上实际有效。 - Cem Schemel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接