0
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;

コンソールへの出力は正しいです: タグ = 0、1、2、3 などですが、すべてのセルは配列の最後の値を示しているだけです。for ステートメントを別の場所に配置し、セルを別のブロックに返すようにしました。私が見落としているのは単純なことだと確信しています。

4

1 に答える 1

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を使用していることを示すと役に立ちました。

于 2012-08-13T06:38:13.823 に答える