0

UItableview複数のセクションがあり、それぞれにlabelと textfieldを含む 2 つの行があります。データをスクロールすると、テキスト フィールドの位置が変わります。

[1]: UITableView のスクロールの問題 この質問には私のものと同様の問題がありますが、正確な解決策を得ることができませんでした。

これは私のデータ ソース、つまり cellForAtIndexPath メソッドです。

static NSString *CellIdentifier = @"Cell";

UILabel *   mainLabel;    
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];        
    cell.accessoryType = UITableViewCellAccessoryNone;        
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    mainLabel = [[[UILabel alloc] initWithFrame:CGRectMake(20.0, 8.0, 100.0, 30.0)] autorelease];
    mainLabel.tag = MAINLABEL_TAG;
    mainLabel.font = [UIFont systemFontOfSize:17.0];
    mainLabel.textColor = [UIColor blackColor];
    mainLabel.backgroundColor = [UIColor clearColor];
    [cell.contentView addSubview:mainLabel];
    mainTF = [[[UITextField alloc]initWithFrame:CGRectMake(150, 8.0, 140.0, 30)] autorelease];
    mainTF.tag = MAINTEXTFIELD_TAG;
    mainTF.font = [UIFont systemFontOfSize:17.0];
    mainTF.textColor = [UIColor blackColor];
    mainTF.backgroundColor = [UIColor clearColor];
    mainTF.borderStyle = UITextBorderStyleRoundedRect;
    mainTF.delegate = self;
    mainTF.autocorrectionType = UITextAutocorrectionTypeNo;
    mainTF.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
    mainTF.returnKeyType = UIReturnKeyDone;
    mainTF.clearButtonMode = UITextFieldViewModeWhileEditing;
    mainTF.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    [cell.contentView addSubview:mainTF];
}
else{
    mainLabel = (UILabel *)[cell.contentView viewWithTag:MAINLABEL_TAG];
    mainTF = (UITextField *)[cell.contentView viewWithTag:MAINTEXTFIELD_TAG];
}

if (indexPath.row == 0) {
    mainLabel.text = @"Quantity";
    //mainTF.text =@"1";
}
else{
    mainLabel.text = @"Unit";
    //mainTF.text = @"100 grams";
}

// Configure the cell...
return cell;
}
4

1 に答える 1

0

セルをデキューすると、以前に入れられたデータが含まれます。セルをロードするたびに、textfield.text を @"" に開始する必要があります。

于 2012-07-30T10:34:49.150 に答える