在显示" old"之后,奥特莱斯不工作再看一遍

时间:2012-06-16 11:15:31

标签: objective-c storyboard iboutletcollection

我的故事板中有几个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++;
}

我的所有UITextField都显示存储在数组中的值。但是如果我去另一个视图(让我们假设我有一个Button;))改变一些东西,然后回到原来的UIView上面的代码仍然被执行,并且数组中有不同的值(这应该是是)。我可以在日志中看到。但是愚蠢的UITextField并没有显示任何内容。既没有以前的内容,也没有新的文本。但为什么?日志清楚地表明t是它应该是的,所以错误必须是写入文本字段,因此我猜这是一个出口问题......

3 个答案:

答案 0 :(得分: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;
    }
}];

答案 1 :(得分:1)

您可以通过

输出tf

的NSLog(@ “%@”,TF);

检查tf是否为空

答案 2 :(得分:0)

好的,我找到了。我忘了发布一些东西,所以我的UITextFields在数组排序之前就已经设置好了。我的错!