在Interface Builder中,如何将UIView添加到子视图中,该子视图是我创建的自定义视图的一部分?

时间:2012-06-26 01:43:32

标签: objective-c xcode interface-builder

我正在为我正在创建的iPhone应用创建自定义视图。此自定义视图是一个Popover对话框,它由一个包含两个图像的UIView,一个用于关闭对话框的按钮,一个标签和一个UIScrollView组成。此视图名为MDPopoverCard。我将这些文件作为我观点的一部分:

MDPopoverCard.xib - The view as drawn up in Interface Builder.
MDPopoverCard.h - Defines a few IBActions and some other properties 
MDPopoverCard.m - Implements some functions defined in the header

这就是Interface Builder中的样子:http://cl.ly/2B0f2x3s1w1i0K2G0Q1r(对不起,我还不能发布图片,因为我是stackoverflow的新手)

我的.m和.h文件中定义了一些属性,用于控制是否显示绿色按钮以及标题标签的文本是什么。

我需要在我的应用中显示一些这些对话框,我想重用我设计的这个界面。我希望能够通过Interface Builder将按钮和其他表单元素添加到UIScrollView中。但是,我有一个问题:

想象一下,我在Interface Builder中有另一个视图。我添加了一个UIView并将其类设置为MDPopoverCard。然后我将几个UIButton对象拖到我的MDPopoverCard视图中。以下是Interface Builder中的示例:

http://cl.ly/1X090h1t1q3f0i3E0917

此屏幕截图显示了我添加了MDPopoverCard的另一个视图(根视图)。然后我添加了两个按钮作为MDPopoverCard的子视图。

这些按钮可以在Interface Builder中正确嵌套。但是,当我运行我的应用程序时,这些按钮会添加之前组成我在xib文件中的MDPopoverCard视图的任何项目。这意味着按钮正在后面添加我的弹出框对话框。这是第一个问题。

第二个问题是我希望将这些按钮和表单元素实际添加到MDPopoverCard视图中包含的UIScrollView中,而不是直接添加到UIView的子视图数组中。有没有办法在Interface Builder中指定它?我真的更喜欢在我的UIView中绘制按钮并通过Interface Builder将它们连接到IBActions,而不是手写我可能需要显示的这些对话框的每个实例(几个)。

有什么建议吗?我能做些什么来澄清这个问题吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

以前Xcode支持自定义UI元素的用户定义的IB插件,您可以像使用内置小部件一样拖放到XIB中。从Xcode 4开始,这个不错的功能已被删除。 (非常感谢,Apple。)

目前我只能想到一种实现你所描述内容的黑客方法。我要做的是以下几点:

  1. IBOutletCollection上创建MDPopoverCard,例如embeddedControls
  2. 将其链接到您想要进入滚动视图的每个UI元素(此处:按钮)
  3. awakeFromNib中实施MDPopoverCard并明确将embeddedControls中所有观看次序的超级视图重置为
  4. 中的滚动视图

    希望这会有所帮助(虽然我没有尝试过)。