使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位

Posted

技术标签:

【中文标题】使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位【英文标题】:Custom UIView built with Interface Builder accessible/positionable via Interface Builder 【发布时间】:2009-11-09 00:11:53 【问题描述】:

这不应该如此令人困惑。我有一个自定义 UIView,上面有一堆控件。 UILabel、按钮等。我使用 Interface Builder 创建了这个 Nib。我希望能够使用界面生成器将此自定义 uiview 放置在另一个 UIView 上。

如何将我的 UIView 自定义类链接到笔尖? initWithCoder 被调用,但我希望这个类从笔尖加载。

谢谢

【问题讨论】:

您找到可接受的答案了吗?请标记一下,谢谢。 @JoePasq 你在这里看到任何有效的答案吗? 不幸的是,我实际上从来没有得到这个工作 【参考方案1】:

为此,您必须为使用自定义控件的类的 Interface Builder 创建一个插件。创建并安装插件后,您将能够通过拖放将视图实例添加到另一个窗口或 Interface Builder 中的视图。要了解如何创建 IB 插件,请参阅 Interface Builder Plug-In Programming Guide 和 Aaron Hillegass 的书 Cocoa Programming for Mac OS X 中有关创建自己的 IB Palette 控件的章节。

Here 是a similar question 已接受答案的原作者的链接。

【讨论】:

从 XCode 4.0+ 开始不支持此功能【参考方案2】:

如果您希望自定义视图在您使用的笔尖中正确绘制,您只需要制作一个插件。您可以制作一个自定义控件,然后让它显示为一个空白矩形,直到现在在运行期间被实例化。

How do I get a view in Interface Builder to load a custom view in another nib?

【讨论】:

【参考方案3】:

您可以使用 Interface Builder 插入 UIViewController 对象,然后设置 UIViewController 的“Nib name”属性。 我不知道这是否会扰乱您的模型,但我认为这是完成您想做的事情的唯一方法。

【讨论】:

您好,肯尼,感谢您的快速回复。我刚试过。我在主视图中添加了一个 UIViewController,将它的笔尖名称设置为自定义子视图的笔尖,并将 uiviewcontroller 的视图属性连接到界面构建器中的自定义视图。一样。它只是没有出现。在自定义视图上调用 initWithCoder,但没有显示任何内容。【参考方案4】:

在 IB 中打开 Identity Inspector 工具 (Command-4),然后选择您的自定义视图,并在“类”弹出窗口中选择您的自定义类的名称而不是通用 UIView。您可能还想将它连接到 ivar。在您的 ViewController 中声明一个自定义类的实例,并在其前面加上 IBOutlet。然后返回并打开 Connections Inspector 并将您的视图连接到 ivar,方法是从自定义视图的引用出口单击拖动到文件所有者(应该是您的 ViewController 的一个实例)并选择 ivar 名称。

当您的 NIB 被加载时,它应该创建该类型的对象并将其连接到该变量。

【讨论】:

以上是关于使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Interface Builder 中的自定义 UITableViewCell?

来自 Interface Builder 的自定义 UIView

使用 Xib 创建的自定义视图在 Interface Builder 中不起作用

Interface Builder 中的自定义字体

使用 Interface Builder 和尽可能少的代码创建具有水平滚动的自定义 UITableViewCell

通过 monotouch 绑定在 Interface Builder 中创建为 UIView 的自定义控件