2013-10-17 45 views
2

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

+2

一个问题。 – rmaddy

回答

1

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

笔尖文件归档对象图

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

xib文件(我仍然称它们为nibs)只是对可以可视化构建的对象图的描述。基本上,您在笔尖中设置的每个对象都会被存档,并且在运行时会被取消存档。您在界面构建器中选择的设置也被归档,相当于在代码中调用方法。

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

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

如果您有自定义视图,您将拥有该子项(.h和.m)并将其设置为笔尖。除非你不希望观点做任何事情。

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

通常,当你无论如何创建榫文件,在iOS上,您选择在得到与它一个视图控制器子类的.h和.m文件。这最终被连接到笔尖中的文件所有者代理对象。以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

+0

你好,先生。感谢那非常详细的答案。既然你好像知道这件事,先生,我不妨问另外一个问题。一个nib文件可以有多个视图吗?例如,一个带有.h和.m的loginViewController,它有它的第一个视图,用户登录的地方,以及用户将被重定向的其他视图,这取决于他或她的登录方式,比如,欢迎和登录错误观点。是否有可能在一个nib文件中有三个视图ala storyboard,全部由loginViewController拥有? – christianleroy

+0

另一个问题,在一个简单的Web服务程序中,5种类型的用户登录,从Web服务中获取数据,这是更好的方法?故事板或单一视图程序? – christianleroy

+0

是一个nib文件可以有多个视图,但我从来没有做过一个设置(或需要)有一个视图控制器的两个视图,除了使用视图控制器遏制API(我认为)与iOS一起5.而不是错误消息的视图,你可能会使用UIAlertView。在iOS 7中,他们添加了将自己的自定义视图添加到UIAlertView的功能,但是我怀疑您需要这样做才能显示错误消息。您应该停止将您的工作视为.h和.m文件,而是开始思考您正在使用哪些对象以及如何编写它们。 –

0

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

0

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

相关问题