Spadict,这里有一些错误。首先,我关心比大多数人都少的挑剔,但它有助于让语言正确。真的是这样。让我们慢慢来吧..
如果你有一个类'ControlsViewController'(注意大写C),你可以随时使用它。你可以实例化尽可能多实例只要你喜欢,只要你喜欢。阅读UIViewController的文档(我在这里假设ControlsViewController是一个你写的类,它是UIViewController的一个子类)告诉我们指定的初始化器是-initWithNibName:bundle:。这意味着我们通常会像这样使用它: -
ControlsViewController *controls = [[ControlsViewController alloc] initWithNibName:@"aNib" bundle:nil];
另一种创建类实例的方法是使用Interface Builder。在界面生成器中,您可以创建任意多个您喜欢的类的实例,调整它们的属性,然后按原样将它们保存为一个nib文件。这是创建GUI实例,窗口,按钮,视图等的好方法,因为您可以通过视觉操作位置和大小,并且可以通过拖放操作将按钮添加到视图或视图中,这比编码更容易。
.nib文件与.zip文件相当。我们并不关心.nib文件 - 我们关心我们存档在其中的对象的实例。我们不是unarchiving .nib文件,我们将我们用Interface Builder创建的对象解除存档,然后将其存档为nib文件。
每次我们加载笔尖文件我们会重新创建里面的对象,就像我们保存笔尖时一样。作为一个例子: - 在界面生成器中,我创建一个窗口,并将背景颜色设置为黑色,宽度为600px。我把它保存到一个笔尖(在这个笔尖中有一个窗口对象 - 但是对于多少个对象或什么类型没有限制)。
当我运行应用程序我加载.nib 5次。我现在有5个宽度为600px的黑色背景的Windows。
UIViewController的指定初始化程序将第一个参数作为笔尖的名称。当我们创建一个UIViewController的实例时,它会调用'-loadView'来加载我们传入的nib,并将其中的对象解除归档。你永远不需要调用'-loadview',并且使用一个笔尖不能替代这种方法。
因此,一个视图可以通过编程方式创建,或者使用Interface Builder创建,然后从nib中加载。这些“都不涉及以编程方式绘制视图”。一旦你有了一个观点,你可以让它画出来,你可以每秒做50次,或者你可以做一次,但这是一个单独的操作。
我对这种居高临下的态度并不热衷,但我的确把你的骆驼套的建议放在心上,它显着提高了我的编码的清晰度。 几个月后,我记得这一点,并已回到upvote你。干杯。 – bitwit 2011-01-02 23:50:03