设置xib文件的文件所有者

时间:2013-07-30 11:01:18

标签: ios objective-c

嗨,我正在读一本我必须处理这种情况的书。 我创建了一个名为HeaderView.xib.的XIB文件然后我连接了这个XIB的File Owner 档案到ItemsViewController。到目前为止一切都很好。我也联系了 ItemsViewController的一些出口,带有XIB上的视图。

现在,在ItemsViewController我必须调用这样的代码:

- (UIView *)headerView
{
    // If we haven't loaded the headerView yet...
    if (!headerView) {
        // Load HeaderView.xib
        [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];
    }

    return headerView;
}

上面的代码会将headerView ItemsViewController的出口设置为相应的 查看XIB文件(我在XIB文件上建立连接的文件)。 我的问题是,为什么我必须 两次 ,指定所有者? (例如,如我在此端口的开头所提到的那样在XIB中进行一次,在代码的上方,第二次,例如,owner: self)。

3 个答案:

答案 0 :(得分:6)

您没有两次指定文件所有者:

  • 第一次(在XIB文件中)指定了文件所有者的类型;这对于Interface Builder来说是必要的,可以知道它可以连接哪些插座。
  • 第二次(在Objective C代码中)指定了所有者的实例。这在运行时必须知道出口连接的对象。

答案 1 :(得分:3)

在XIB中指定所有者告诉Xcode控制器理解什么(它有哪些插座),以便它可以提供给你的连接。这是一个班级。

在代码中指定所有者告诉unarchiving进程控制器的哪个实例实际上将实现该角色,因此应该建立与从NIB取消归档的新实例的连接。

答案 2 :(得分:0)

我找到了......当世界不再使用XIB时...... 在您喜欢的文本编辑器中打开XIB或NIB文件

你会在那里找到这条线......

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MyCalssName">

更改班级名称,保存文件,您的文件所有者将被更改。 警告:关闭Xcode(自动重新加载更改)并备份,以防万一你搞砸了。