为什么我的UITextField总是返回数组中的最后一个值?

时间:2012-08-13 05:03:22

标签: ios uitableview nsmutablearray

static NSString *cellIdentifier = @"Cell";


NSMutableArray *fields=[[NSMutableArray alloc] init];

MDSpreadViewCell *cell = [aSpreadView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
    cell = [[[MDSpreadViewCell alloc] initWithStyle:MDSpreadViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

        for (i =0; i < N; i++){
        NSLog (@"tag = %i", i);

        [fields  addObject:[[UITextField alloc] initWithFrame:CGRectMake(10, 10, 185, 30)]];
        [[fields objectAtIndex:i] setTag:i];

        NSString *John =  [NSString stringWithFormat:@"%i", i];

             [[fields objectAtIndex:i] setText:John];

      [[fields objectAtIndex:i] setBackgroundColor:[UIColor redColor]];
        [[fields objectAtIndex:i] setDelegate:self];
        [[fields objectAtIndex:i] setUserInteractionEnabled:TRUE];
           viewWithTag:i]).text;
            [cell addSubview:[fields objectAtIndex:i]];
    }

    return cell;

输出到控制台的内容是正确的:Tag = 0,1,2,3等,但每个单元格只是表示数组中的最后一个值。我已经尝试将for语句放在不同的位置以及将单元格返回到不同的块中。我确信这是一件很简单的事,我忽略了。

1 个答案:

答案 0 :(得分:0)

这可能只是一个部分有用的答案,因为您还有一些其他需要考虑的问题,我们在目前为止所显示的代码段中没有看到这些问题(最值得注意的是,您需要某种模型,例如一个多维数组,它独立于表视图保存电子表格数据,以及当用户更改文本字段中的任何值时将更新模型的代码。)

但我认为此时您只是想在表格单元格中创建文本字段并在其中显示一些数字。您可以尝试这样的事情:

static NSString *cellIdentifier = @"Cell";
MDSpreadViewCell *cell = [aSpreadView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {
    cell = [[[MDSpreadViewCell alloc] initWithStyle:MDSpreadViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 185, 30)]];

    textField.tag = 1;
    textField.backgroundColor = [UIColor redColor];
    textField.delegate = self;
    [textField setUserInteractionEnabled:YES];

    [cell addSubview:textField];
}

UITextField *textFieldForCell = [cell viewWithTag:1];
int numberInCell = rowPath.row + columPath.column;
textFieldForCell.text = [NSString stringWithFormat:@"%i", numberInCell];

return cell;

正如将来的说明一样,原始问题表明您使用的是MDSpreadView