我有一个包含三行的视图,并希望以编程方式为它们设置引用出口 - 这是如何完成的?
答案 0 :(得分:1)
IBOutlet
只是一个标记,因此Interface Builder知道哪些实例变量要从您的笔尖分配对象。谈论自动分配出口并没有多大意义 - 它们的全部目的都是针对相反的方法。 IB
代表Interface Builder。
如果要将nib中的对象分配给实例变量,则需要跳过视图层次结构并使用某种方法识别要收集的对象。
您可以通过访问视图控制器中的self.view
来跳过视图层次结构。如果nib中的对象不是主视图的子视图,则无法访问它们。您可以使用UINib
加载nib,而不是依靠内置功能来获取这些对象。
您可以根据需要以多种不同方式识别对象。您可以在Interface Builder中将整数分配给视图的tag
属性。您可以查看层次结构中某个特定点的视图。您可以查看特定类型的视图。或者你可以混合和匹配 - 例如,主视图的UIButton
子类带有偶数标记。
如果您使用Interface Builder布局视图,则最简单的方法就是使用Interface Builder简单地将视图分配给出口。
答案 1 :(得分:0)
(any pointer) = [[self.view subviews] objectAtIndex:(object's index)];
不确定对象的ID。尝试在界面构建器的身份检查器中找到
答案 2 :(得分:0)
如果您希望从左到右排序一个视图的表视图单元格,则可以执行以下操作。
NSMutableArray *myCells = [[NSMutableArray alloc] initWithCapacity:NUMBER_OF_CELLS];
NSArray *allSubviews = [theView subviews];
for(NSView *aSub in allSubviews) {
if([aSub isKindOfClass:[MyCustomCellViewClass class]]) {
[myCells addObject:aSub];
}
}
// Here you can sort your found cells with their origin's x values.
// -[NSMutableArray sortUsingFunction:context:] can help you with that.
// Do what you want to do
[myCells release];