繁体   English   中英

以编程方式设置参考出口

[英]Set referencing outlets programmatically

我有一个包含三行的视图,并希望以编程方式为它们设置引用出口-如何完成?

IBOutlet只是一个标记,因此Interface Builder可以从笔尖知道要为哪些实例变量分配对象。 谈论自动分配出口真的没有意义-它们的整个目的是相反的方法。 IB代表Interface Builder。

如果要在笔尖中将对象分配给实例变量,则需要遍历视图层次结构,并采用某种方式来标识要收集的对象。

您可以通过在视图控制器中访问self.view来遍历视图层次结构。 如果笔尖中的对象不是主视图的子视图,则将无法访问它们。 您可以使用UINib加载笔尖,而不是依靠内置功能来获取这些对象。

您可以根据需要以几种不同的方式标识对象。 您可以在Interface Builder中将整数分配给视图的tag属性。 您可以查看您知道将在层次结构中某个点上的视图。 您可以查看特定类型的视图。 或者,您可以混合搭配-例如,主视图的UIButton子类带有偶数标签。

如果要使用Interface Builder布置视图,则通常总是最简单的方法是使用Interface Builder将视图分配给出口。

(any pointer) = [[self.view subviews] objectAtIndex:(object's index)];

不确定对象的ID。 尝试在界面生成器的身份检查器中查找

如果要使一个视图的表格视图单元格从左到右排序,则可以执行以下操作。

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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM