セルを含むテーブルがあり、各セルにはUITextFieldがあります。これらのテキストフィールドのデリゲートをselfに設定し、編集が終了したときにいくつかの計算を実行しています。
私の問題はテキストフィールドにあります。最初のフィールド以外のフィールドに入力すると、最初のフィールドを除くすべてのテキストフィールドが更新されます。最初のものを入力すると、他のものは完全に更新されます。
これにより、どのデータが更新されるかを確認できcell.textLabel.text
ました。配列内の特定の位置に等しく設定しましたが、その位置の値は表示されません。
これが私のcellForRowAtIndex
方法です:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UITextField *tf;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
tf = [[UITextField alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2 + 25,
5,
cell.contentView.frame.size.width/2 - 25 - 25,
cell.contentView.frame.size.height - 10)];
tf.font = [UIFont fontWithName:@"Helvetica" size:16];
tf.textAlignment = NSTextAlignmentLeft;
tf.backgroundColor = [UIColor clearColor];
tf.textColor = [UIColor blueColor];
tf.tag = indexPath.row;
tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
tf.returnKeyType = UIReturnKeyDone;
tf.delegate = self;
tf.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
cell.textLabel.text = [_titles objectAtIndex:indexPath.row];
tf.placeholder = cell.textLabel.text;
[cell.contentView addSubview:tf];
}
else
{
tf = (UITextField *)[cell viewWithTag:indexPath.row];
}
tf.text = [NSString stringWithFormat:@"%.2f", [[_data objectAtIndex:indexPath.row] floatValue]];
NSLog(@"Value at index %i is %.2f", indexPath.row, [[_data objectAtIndex:indexPath.row] floatValue]);
cell.textLabel.text = [_titles objectAtIndex:indexPath.row];
return cell;
}
私がこれを試したとき、私の計算の後、これはログに記録されたものです:
インデックス0の値は1.20です。
インデックス1の値は1.00です
。インデックス2の値は4.55です。
ただし、最初のテキストフィールドには、1.20ではなく0が表示されていました。
これらのテキストフィールドを追加することでどこが間違っていますか?