屏幕上有一个网格。它是UIView子类的一个实例。在网格中的单元格中,我想添加子视图的实例 - UIView的另一个自定义子类 - 当用户与应用程序交互时。子视图本身就是我想在XIB中设计的东西。其控件代表该特定单元的状态。它由几个UIControls组成(比如一个标签和一个按钮)。
我已经知道我可以使用
动态加载NIB[[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil];
我知道如果我将NIB中的File's Owner属性设置为视图控制器,它们将负责查看这些子视图将被添加到的视图。我使用它将一些外部NIB添加到主应用程序屏幕中的UIScrollview。
我想知道的是如何动态地执行此操作?我想说的是:
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中的文件所有者将是一个问题:没有一个,并且不可能:我不知道我需要多少。我应该使用类似ArrayController的东西吗?
编辑2 请忽略之前的编辑;我把它留在了答案中,但这并不是我认为的问题。
我可以这样做吗?
由于
答案 0 :(得分:4)
这在设计笔尖中的表格视图单元格时通常使用。你有两个选择:
答案 1 :(得分:1)
尝试访问该数组中的第一个对象:
MySubviewCell * sv = (MySubviewCell*)[[[NSBundle mainBundle] loadNibNamed:@"MyNIB"
owner:self
options:nil]
objectAtIndex:0];