如何自动在Referencing Outlet Collection中有序排列项目?

时间:2013-02-13 07:37:45

标签: iphone uitextfield iboutletcollection

我将在Xib中排列的UITextfields的引用Outlet集合作为一个在另一个下面。当我打印Referencing Outlet Collection时,我发现它是无序的。我需要自动排列文本字段,即文本fileld在UI中排在第1位,应该在Outlet Collection Array中出现第1位。有什么想法吗?

3 个答案:

答案 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。维护订单设置控件的标签值