每个.xib文件都必须有自己的.h和.m文件吗?

时间:2013-10-17 18:51:30

标签: ios objective-c cocoa-touch cocoa xib

我正在研究iOS开发,因为我即将在几天内开始使用Web服务创建iOS应用程序。虽然我已经阅读并看过很多教程,文档,论坛等等,但我的问题仍然没有答案,或者说答案没有明确说明。我希望有一个人可以帮助我。我只是想知道这个,因为如果每个.xib文件都必须有自己的类文件,那么这意味着我会有很多文件。

3 个答案:

答案 0 :(得分:1)

XIB文件是内容存档,可以包含视图控制器和视图。一般来说,'内置'视图控制器在你将它们子类化之前没有多大用处,所以如果一个XIB包含一个视图控制器,那么你通常会有相关的.h / .m文件。但是XIB可能只包含视图。在这种情况下,可能可能没有关联的文件(但是你很可能有一个视图子类,因为你的视图可能想要有一些子视图的出口)。

答案 1 :(得分:1)

Xib文件可以包含任何类型的序列化资源 - 数组,字典,不仅包括视图和视图控制器。所以xib文件不能有* .h * .m文件

答案 2 :(得分:1)

答案是否定的,但是当你为每个视图控制器(而不是一个nib文件集合的故事板)使用nib文件时,你通常会这样做。

nib文件存档对象图

记住这一点。界面构建器及其创建的nib文件用于创建对象图。实际上,您可以在nib中抛出任意对象,并在运行时加载它们。当我第一次开始时,这是最令人困惑的话题之一。

xib文件(我仍称它们为nib)只是一个可以直观构建的对象图的描述。基本上,您在nib中设置的每个对象都已归档,并且在运行时未归档。您在界面构建器中选择的设置也已存档,相当于在代码中调用方法。

例如,在nib中为UIView选择背景颜色与在代码中发送setBackgroundColor:相同。调整视图大小就像发送setFrame:等。这些都是在构建时归档的,并在运行时取消归档。

nib文件保留对您子类化的对象的引用。

如果您有自定义视图,那么您将拥有该子类(.h和.m)并将其设置为nib。除非你当然不希望视图做任何事情。

Setting the class here sets a reference to your .h file and allows you to set up common settings in IB

通常,当您创建一个nib文件时,无论如何,您都选择使用它来获取视图控制器子类的.h和.m文件。这最终会连接到nib中的文件所有者代理对象。以UIView为例,当您为视图创建子类时,在界面构建器中设置它会为您提供对该代码的引用。然后,您可以在笔尖中设置其大小,背景颜色,绘图选项等以及它在代码中实际绘制的内容。

Options in interface builder which are archived at runtime.  This saves you time and lines of code

以下是苹果公司关于笔尖的详细文章:

https://developer.apple.com/library/ios/documentation/cocoa/conceptual/LoadingResources/CocoaNibs/CocoaNibs.html