1

我的 Storyboard 中有几个 UIView,当然,我可以使用 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 都显示存储在数组中的值。但是,如果我转到另一个视图(假设我有一个 Button ;))更改某些内容,然后返回到原始 UIView 上面的代码仍然会被执行,并且数组中有不同的值(这应该是是)。我可以在日志中看到这一点。但是愚蠢的 UITextField 只是不显示任何内容。既不是以前的内容,也不是新的文本。但为什么?日志清楚地表明 t 是它应该是的,所以错误一定是在将它写入文本字段时,因此我猜这是一个出口问题......

4

3 回答 3

2

我们无法保证您的奥特莱斯收藏顺序。它的处理方式非常像 NSDictionary 而不是 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;
    }
}];
于 2012-06-19T19:49:11.277 回答
1

你可以输出 tf,by

NSLog(@"%@",tf);

检查 tf 是否为空

于 2012-06-16T11:20:52.190 回答
0

好的,我找到了。我忘了释放一些东西,所以我的 UITextFields 确实在数组排序之前设置好了。我的错!

于 2012-06-19T20:08:16.613 回答