使用 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 中不起作用