从NIBdynamic地创build一个UIView的多个实例

我在屏幕上有一个网格。 它是一个UIView子类的实例。 在网格中的单元格中,我想添加子视图的实例 – UIView的另一个自定义子类 – 用户与应用程序交互。 子视图本身是我想在XIB中devise的东西。 其控件代表特定单元格的状态。 它由几个UIControls(如标签和button)组成。

我已经知道我可以使用dynamic加载NIB

[[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil]; 

而且我知道如果将NIB中的文件所有者属性设置为视图控制器,它将负责将这些子视图添加到视图,他们将工作。 我使用它来添加一些外部的NIB到主应用程序屏幕上的UIScrollview。

我想知道的是如何dynamic地做到这一点? 我想说的是:

 MySubviewCell * sv = [[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil]; [sv setFoo:@"Foo"]; [sv setBar:123]; [sv setFrame:myrect]; [mainView addSubview:sv]; 

但是,当然loadNibNamed不会返回我的子视图实例,而是返回视图中所有控件的数组。

编辑文件的所有者在MySubviewCell NIB将是一个问题:没有一个,不能有:我不知道有多less我需要。 我应该使用像一个ArrayController?

编辑2请忽略以前的编辑; 我已经把它留在答案中,但这不是我认为的问题。

我可以这样做吗?

谢谢

在devise笔尖中的表格视图单元格时,通常使用这种方法。 你有两个select:

  1. 返回数组的索引0处的对象将是您的笔尖中的“根”对象。
  2. 在MySubviewCelltypes的视图控制器中创build一个sockets。 将文件的所有者类设置到您的视图控制器的笔尖中,然后将插口连接到您感兴趣的笔尖中的元素。当您使用所有者自装载笔尖时,插口将被填充。 然后,您可以对其进行configuration,将其添加到您的arrays,并将插口设置为零,以准备再次为下一个实例装入笔尖。

尝试访问该数组中的第一个对象:

 MySubviewCell * sv = (MySubviewCell*)[[[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil] objectAtIndex:0];