Col*_*las 36 macos cocoa interface-builder nib
我是Cocoa的新手,我不理解File's Owner
.nib文件的概念.
这是我看待事物的方式:
考虑一个myNibFile.nib
描述窗口外观的文件文件.
现在,我想将一个实际窗口连接到此.nib文件.所以,我创建了一个类myWindow
,它是一个子类NSWindowController
.并且,为了做这个连接,我改变了init
这样的方法:
-(id)init
{
[super initWithWindowNibName:@"myNibFile"];
return self;
}
Run Code Online (Sandbox Code Playgroud)所以,我理解当我创建一个实例时myWindow
,"系统"将会查看.nib文件并创建适当的对象.
所以,我的问题是:
为什么我必须指定File's Owner
我的.nib文件myWindow
?这不是多余的吗?
我想这意味着我真的不明白是什么File's Owner
.它是什么 ?为什么.nib文件必须属于某个东西?它不能在我的"应用程序"中"某处",当它需要时,"系统"去那里使用它?
感谢您帮助我更清楚地了解这些新概念!
Sam*_*din 60
要记住两点:
loadNibNamed:
或initWithNibName:
.因此,您创建了一个包含大量按钮,子视图等的精美视图.如果要在从加载对象(通常是视图或窗口控制器)加载nib之后随时修改任何这些视图/对象,请将这些对象的出口设置为文件所有者.就这么简单.
这就是为什么默认情况下所有视图控制器或窗口控制器都充当文件所有者,并且还有一个出口到nib文件中的主窗口或视图对象:因为,如果你正在控制你肯定需要的东西有一个插座,以便您可以发送消息.
它被称为文件所有者并给出一个特殊位置的原因是因为与nib中的其他对象不同,文件所有者是nib的外部而不是它的一部分.实际上,只有在加载笔尖时它才可用.因此文件所有者是实际对象的替代或代理,稍后将加载nib.
希望你明白.如果你问我,我会澄清任何一点.
要理解的基本要点是Interface Builder允许您创建自动相互连接的对象,而不需要您的程序.您可以实例化所有类型的对象,包括非查看对象,它们可以是相互关联的; 例如,您可以创建表视图数据源的实例以及视图本身等.此机制通常用于在主菜单NIB中创建应用程序代理.
但是,由于它都是通过拖放完成的,所以似乎没有办法在任何NIB对象和应用程序中已存在的对象之间形成连接,但有一个例外.
当代码加载NIB文件时,您可以选择指定NIB将认为是"文件所有者"的一个对象.这是您在Interface Builder中看到的占位符; 因为它可以表示应用程序中的任何对象,所以Interface Builder无法知道它上面有哪些操作/出口.这就是您可以在"属性"选项卡中修改"文件所有者"的"类"的原因.
文件所有者并不真正代表"所有权"或"父母身份".它代表的是"加载此NIB的对象".
归档时间: |
|
查看次数: |
20512 次 |
最近记录: |