我正在尝试为iPhone创建一个简单的翻译程序,并在xcode中使用Interface Builder绘制了5个标签和5个文本字段.我已将问题添加到UILabels的插座集合以及UITextView插座集合的答案中.这部分都很棒,我可以枚举这些集合并返回标签和答案列表.我的问题是,我希望得到的是:
索引问题#答案#1 1 1 2 2 2 3 3 3等按顺序排列,我得到:
1 1 2 2 3 1 3 2 3等,每次编辑和重新编译程序时都不同.如何在插座集合中同步标签列表和文本视图,以便我可以通过它们进行枚举来检查是否为问题提供了正确的答案?
您可以通过几种方式匹配标签和文本视图.一种简单的方法是使用标签.
每个UIView都有一个整数tag属性,您可以随意使用它.您可以在代码中设置标记,也可以在笔尖的"属性"检查器的"视图"部分中设置标记.您还可以要求视图使用该viewWithTag:方法搜索具有特定标记的视图的所有后代(包括其自身),但我们不会使用该方法.
这是你做的.在您的笔尖中,为每个标签指定一个不同的标签.假设您将标签A标记为1,标记B标记为2,依此类推.为每个文本视图指定与相应标签相同的标记.因此,带有标签A的文本视图也会获得标记1,而带有标签B的文本视图也会获得标记2,依此类推.
然后,在您的viewDidLoad方法中,您可以按标记对插座集合进行排序.假设标签位于名为的插座集合中labels,文本视图位于名为的插座集合中textViews.以下是对它们进行排序的方法:
- (void)viewDidLoad {
[super viewDidLoad];
NSComparator compareTags = ^(id a, id b) {
NSInteger aTag = [a tag];
NSInteger bTag = [b tag];
return aTag < bTag ? NSOrderedDescending
: aTag > bTag ? NSOrderedAscending
: NSOrderedSame;
};
self.labels = [self.labels sortedArrayUsingComparator:compareTags];
self.textViews = [self.textViews sortedArrayUsingComparator:compareTags];
}
Run Code Online (Sandbox Code Playgroud)
现在labels数组和textViews数组匹配,因此索引0处的标签与索引0处labels的文本视图一致textViews,依此类推.
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |