【发布时间】:2013-02-13 07:37:44
【问题描述】:
我在 Xib 中将 UITextfields 的引用插座集合排列为一个在另一个之下。当我打印引用插座集合时,我发现它是无序的。我需要自动排列文本字段,即文本 fileld 在 UI 中排在第一位,应该在 Outlet Collection Array 中排在第一位。有什么想法吗?
【问题讨论】:
标签: iphone uitextfield iboutletcollection
我在 Xib 中将 UITextfields 的引用插座集合排列为一个在另一个之下。当我打印引用插座集合时,我发现它是无序的。我需要自动排列文本字段,即文本 fileld 在 UI 中排在第一位,应该在 Outlet Collection Array 中排在第一位。有什么想法吗?
【问题讨论】:
标签: iphone uitextfield iboutletcollection
这是IBOutletCollection 的不幸事实。你可能想欺骗rdar://12121242。
您可以在IB中为每个视图设置一个标签,然后按tag对集合进行排序。您还可以按帧原点对集合进行排序。无论哪种情况,您都必须在 viewDidLoad 中手动执行此操作。
【讨论】:
假设您有一个名为 labelsArray 的 IBOutletCollection,并且您已将每个标签的标签属性设置为所需的顺序,那么代码是:
-(void)viewDidLoad {
self.labelsArray = [self.labelsArray sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
}
【讨论】:
是的,苹果在 IBOutletCollection 的帮助下为此提供了便利 像这样声明属性
@property (nonatomic,retain) IBOutletCollection(UILabel) NSArray *labelsArray;
用上述属性连接所有控件。
在加载NIB文件时自动为你实例化labelsArray
现在只需在您的程序中使用 labelsArray 即可。为维护顺序设置控件的标签值,如你所愿
【讨论】: