使用Interface Builder构建的自定义UIView可以通过Interface Builder进行访问和定位。

6

这不应该那么困惑。我有一个自定义的UIView,上面有很多控件,比如UILabels、buttons等。我使用Interface Builder创建了这个Nib文件。我想使用Interface Builder将这个自定义UIView放置在另一个UIView上。

我该如何将我的UIView自定义类与Nib文件链接起来呢?虽然initWithCoder方法会被调用,但我希望这个类能够从Nib文件中加载。

谢谢


你找到了一个可接受的答案吗?请标记它,谢谢。 - fearmint
@JoePasq,你在这里看到任何有效的答案了吗? - Dan Rosenstark
我很遗憾,实际上我从来没有让这个工作起来。 - Nader
4个回答

3
为了实现这个功能,您需要为Interface Builder创建一个插件,该插件使用您自定义控件的类。一旦您创建并安装了插件,您就可以通过拖放将您的视图实例添加到Interface Builder中的另一个窗口或视图中。有关创建IB插件的详细信息,请参见Interface Builder插件编程指南和Aaron Hillegass的书中有关创建自己的IB Palette控件的章节,Cocoa Programming for Mac OS X这里是接受答案的原作者的链接,对于类似的问题

3
截至XCode 4.0+版本,事实证明此功能不受支持。 - Ege Akpinar

2

0

您可以使用Interface Builder插入一个UIViewController对象,然后设置UIViewController的“Nib名称”属性。我不知道这是否会破坏您的模型,但我认为这是实现您想要做的唯一方法。


嗨Kenny,感谢您的快速回复。我刚试了一下。我将一个UIViewController添加到我的主视图中,将其nib名称设置为自定义子视图的nib,并将uiviewcontroller的view属性连接到界面构建器中的自定义视图。同样的问题。它只是没有显示出来。initWithCoder在自定义视图上被调用,但什么也没有显示出来。 - Nader

0
在IB中打开Identity Inspector工具(Command-4),然后选择您的自定义视图,在Class弹出菜单中选择您的自定义类的名称,而不是通用的UIView。您可能还想将其连接到一个ivar。在您的ViewController中,使用IBOutlet声明您自定义类的实例,并在其前面。然后返回并打开Connections Inspector,通过从自定义视图的引用输出口向文件所有者(应该是您的ViewController的实例)拖动并选择ivar名称来将您的视图连接到ivar。
当您的NIB被加载时,它应该创建该类型的对象并将其连接到该变量。

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