我将在Xib中排列的UITextfields的引用Outlet集合作为一个在另一个下面。当我打印Referencing Outlet Collection时,我发现它是无序的。我需要自动排列文本字段,即文本fileld在UI中排在第1位,应该在Outlet Collection Array中出现第1位。有什么想法吗?
答案 0 :(得分:5)
IBOutletCollection
这是一个不幸的事实。您可能希望欺骗rdar://12121242。
您可以为IB中的每个视图设置标记,然后按tag
对集合进行排序。您还可以按帧原点对集合进行排序。在任何一种情况下,您都必须在viewDidLoad
手动执行此操作。
答案 1 :(得分:4)
假设您有一个名为labelsArray的IBOutletCollection,并且您已将每个的tag属性设置为所需的顺序,则代码为:
-(void)viewDidLoad {
self.labelsArray = [self.labelsArray sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
}
答案 2 :(得分:1)
是的,苹果通过IBOutletCollection的帮助为此提供了便利 声明像这样的属性
@property (nonatomic,retain) IBOutletCollection(UILabel) NSArray *labelsArray;
使用上述属性连接所有控件。
在加载NIB文件时,labelsArray会自动为您实例化
现在只需在程序中使用labelsArray作为oulets。维护订单设置控件的标签值