0

我正在为我正在创建的 iPhone 应用程序创建自定义视图。这个自定义视图是一个弹出对话框,它由一个包含两个图像的 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,而不是手写我可能需要显示的这些对话框的每个实例(几个)。

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

谢谢你的帮助!

4

1 回答 1

0

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

目前我只能想出一种骇人听闻的方式来实现您所描述的。我会做的是以下几点:

  1. IBOutletCollection在你的上创建一个MDPopoverCard,例如embeddedControls
  2. 将它与您想要进入滚动视图的每个 UI 元素(此处:按钮)链接起来
  3. 实现awakeFromNibinMDPopoverCard并将所有视图的超级视图显式重置为embeddedControls滚动视图

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

于 2012-06-26T09:49:47.587 回答