我的情节提要中有几个UIViews,当然,我可以使用segue在它们之间切换。最初这工作得很好:notenKurse 是一个 NSMutableArray,kurse1Outlets 是一个带有我的 UITextFields 的出口集合。
int counter = 0;
for (UITextField *tf in kurse1Outlets) {
NSMutableString *t = [NSMutableString stringWithFormat:@"%@", [notenKurse objectAtIndex:counter]];
NSLog(@"Object at index %i is %@", counter, [notenKurse objectAtIndex:counter]);
if ([t isEqualToString:@"42"]) {
[t setString:@""];
}
[tf setText:t];
NSLog(@"UITextField in slot %i should now display %@", counter, t);
counter++;
}
我所有的 UITextFields 都显示存储在数组中的值。但是如果我转到另一个视图(假设我有一个按钮;))更改某些内容,然后返回到原始UIView上面的代码仍然被执行,并且数组中有不同的值(应该是这样)。我可以在日志中看到这一点。但是愚蠢的UITextField只是不显示任何内容。既不是以前的内容,也不是新文本。但是为什么?日志清楚地表明 t 是它应该的样子,所以错误一定是在将其写入文本字段中,因此我想这是一个出口问题......
无法保证您的奥特莱斯收藏的顺序。它的处理方式非常像NSDictionary,而不是NSArray - 在NSArray中,秩序是有保证的。迭代这种集合将为不同的设备/人/月相产生不同的结果。
当我使用这样的集合时,我倾向于设置"标签",然后在 viewDidLoad 时通过排序标签来重新排序出口集合。
self.calendarDayImageViews = [_calendarDayImageViews sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([(UIView *)obj1 tag] < [(UIView *)obj2 tag]) {
return NSOrderedAscending;
}
else if([(UIView *)obj1 tag] > [(UIView *)obj2 tag]){
return NSOrderedDescending;
}
else{
return NSOrderedSame;
}
}];
你可以只输出 tf,由
NSLog(@"%@",tf);
检查 tf 是否为空
好的,我找到了。我忘了发布一些东西,所以我的 UITextFields 确实在数组排序之前被设置了。我的错误!