3

我在 Xib 中将 UITextfields 的引用插座集合排列为一个在另一个之下。当我打印引用插座集合时,我发现它是无序的。我需要自动排列文本字段,即文本 fileld 在 UI 中排在第一位,应该在 Outlet Collection Array 中排在第一位。任何的想法?

4

3 回答 3

5

这是一个不幸的事实IBOutletCollection。您可能想欺骗rdar://12121242

您可以在 IB 中为每个视图设置一个标签,然后按 . 对集合进行排序tag。您还可以按帧原点对集合进行排序。无论哪种情况,您都必须手动执行此操作viewDidLoad

于 2013-02-13T07:42:44.830 回答
4

假设您有一个名为 labelsArray 的 IBOutletCollection,并且您已将每个标签属性设置为所需的顺序,则代码为:

-(void)viewDidLoad {
    self.labelsArray = [self.labelsArray sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
}
于 2013-05-03T08:39:25.853 回答
1

是的,苹果在 IBOutletCollection 的帮助下为此提供了便利声明这样的属性

@property (nonatomic,retain) IBOutletCollection(UILabel) NSArray *labelsArray;

连接所有具有上述属性的控件。

在加载 NIB 文件时自动为您实例化 labelsArray

现在只需在您的程序中使用 labelsArray 即可。为维护顺序设置控件的标签值,如你所愿

于 2013-02-13T07:51:56.003 回答