1

基本的に、このUItableviewは、生成されると2つのセルで構成されます。1つはスコア付きで、もう1つをタッチすると、別のスコアの行が挿入されます。これはすべてうまく機能しますが、スクロールして最初のセルが画面の外に出ると、戻ってきたときにその上に別のセルが追加されます(重ね合わせます)。私は何か間違ったことをしていると思いますdequeueReusableCellWithIdentifieraddSubview、それが何であるか理解できません...

これが私のコードです:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    int feedIndex = [indexPath indexAtPosition:[indexPath length] - 1];
    static NSString *CellIdentifier1 = @"Cell1";
    static NSString *CellIdentifier2 = @"Cell2";


    if (feedIndex == 0)// configures the first cell

    {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1 forIndexPath:indexPath];

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier1];

    textField1 = [[UITextField alloc] initWithFrame:CGRectMake(0, (44 - 15) / 2.0, 80, 15)];
    textField1.font = [UIFont boldSystemFontOfSize:15];
        textField1.tag = i+1;// to keep track of the cells that are created by the user
        i++;
    textField1.textAlignment = UITextAlignmentCenter;
        [textField1 addTarget:self//to get rid of the keyboard
                        action:@selector(saisieReturn:)
              forControlEvents:UIControlEventEditingDidEndOnExit];
    textField1.text = @"00";
            [cell.contentView addSubview:textField1];


    textField2 = [[UITextField alloc] initWithFrame:CGRectMake(80, (44 - 15) / 2.0, 80, 15)];
    textField2.font = [UIFont boldSystemFontOfSize:15];
                textField2.tag = i+1;
        i++;
    textField2.textAlignment = UITextAlignmentCenter;
        [textField2 addTarget:self
                      action:@selector(saisieReturn:)
            forControlEvents:UIControlEventEditingDidEndOnExit];
        textField2.text = @"00";
    [cell.contentView addSubview:textField2];


    textField3 = [[UITextField alloc] initWithFrame:CGRectMake(160, (44 - 15) / 2.0, 80, 15)];
    textField3.font = [UIFont boldSystemFontOfSize:15];
                textField3.tag = i+1;
        i++;
    textField3.textAlignment = UITextAlignmentCenter;
        [textField3 addTarget:self
                      action:@selector(saisieReturn:)
            forControlEvents:UIControlEventEditingDidEndOnExit];
        textField3.text = @"00";
        [cell.contentView addSubview:textField3];


    textField4 = [[UITextField alloc] initWithFrame:CGRectMake(240, (44 - 15) / 2.0, 80, 15)];
    textField4.font = [UIFont boldSystemFontOfSize:15];
                textField4.tag = i+1;
        i++;
    textField4.textAlignment = UITextAlignmentCenter;
        [textField4 addTarget:self
                      action:@selector(saisieReturn:)
            forControlEvents:UIControlEventEditingDidEndOnExit];
        textField4.text = @"00";
        [cell.contentView addSubview:textField4];
        }
            return cell;

    }

    else if (feedIndex == nbrow -1) //configures the second cell
    {

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2 forIndexPath:indexPath];
        if(cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
        }
        cell.textLabel.text = @"Add score";

        return cell;
    }

    else // configures all of the other cells that are created by the user when he clicks and the second cell
    {

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1 forIndexPath:indexPath];

        textField1 = [[UITextField alloc] initWithFrame:CGRectMake(0, (44 - 15) / 2.0, 80, 15)];
        textField1.font = [UIFont boldSystemFontOfSize:15];
        textField1.tag = i+1;
        i++;
        textField1.textAlignment = UITextAlignmentCenter;
        [textField1 addTarget:self//to get rid of the keyboard
                       action:@selector(saisieReturn:)
             forControlEvents:UIControlEventEditingDidEndOnExit];
        textField1.text = @"00";
        [cell.contentView addSubview:textField1];


        textField2 = [[UITextField alloc] initWithFrame:CGRectMake(80, (44 - 15) / 2.0, 80, 15)];
        textField2.font = [UIFont boldSystemFontOfSize:15];
        textField2.tag = i+1;
        i++;
        textField2.textAlignment = UITextAlignmentCenter;
        [textField2 addTarget:self
                       action:@selector(saisieReturn:)
             forControlEvents:UIControlEventEditingDidEndOnExit];
        textField2.text = @"00";
        [cell.contentView addSubview:textField2];


        textField3 = [[UITextField alloc] initWithFrame:CGRectMake(160, (44 - 15) / 2.0, 80, 15)];
        textField3.font = [UIFont boldSystemFontOfSize:15];
        textField3.tag = i+1;
        i++;
        textField3.textAlignment = UITextAlignmentCenter;
        [textField3 addTarget:self
                       action:@selector(saisieReturn:)
             forControlEvents:UIControlEventEditingDidEndOnExit];
        textField3.text = @"00";
        [cell.contentView addSubview:textField3];


        textField4 = [[UITextField alloc] initWithFrame:CGRectMake(240, (44 - 15) / 2.0, 80, 15)];
        textField4.font = [UIFont boldSystemFontOfSize:15];
        textField4.tag = i+1;
        i++;
        textField4.textAlignment = UITextAlignmentCenter;
        [textField4 addTarget:self
                       action:@selector(saisieReturn:)
             forControlEvents:UIControlEventEditingDidEndOnExit];
        textField4.text = @"00";
        [cell.contentView addSubview:textField4];

        return cell;            
    }}

私はiOS向けの開発に不慣れで、最初のアプリのプログラミングで最初の問題に直面しています。私はインターネット全体を探していましたが、同様の問題のあるスレッドを見つけたとしても、なんとか解決することはできません。

4

1 に答える 1

6

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1 forIndexPath:indexPath];

textField1 = [[UITextField alloc] initWithFrame:CGRectMake(0, (44 - 15) / 2.0, 80, 15)];
textField1.font = [UIFont boldSystemFontOfSize:15];
textField1.tag = i+1;
i++;
textField1.textAlignment = UITextAlignmentCenter;
[textField1 addTarget:self//to get rid of the keyboard
               action:@selector(saisieReturn:)
     forControlEvents:UIControlEventEditingDidEndOnExit];
textField1.text = @"00";
[cell.contentView addSubview:textField1];


textField2 = [[UITextField alloc] initWithFrame:CGRectMake(80, (44 - 15) / 2.0, 80, 15)];
textField2.font = [UIFont boldSystemFontOfSize:15];
textField2.tag = i+1;
i++;
textField2.textAlignment = UITextAlignmentCenter;
[textField2 addTarget:self
               action:@selector(saisieReturn:)
     forControlEvents:UIControlEventEditingDidEndOnExit];
textField2.text = @"00";
[cell.contentView addSubview:textField2];


textField3 = [[UITextField alloc] initWithFrame:CGRectMake(160, (44 - 15) / 2.0, 80, 15)];
textField3.font = [UIFont boldSystemFontOfSize:15];
textField3.tag = i+1;
i++;
textField3.textAlignment = UITextAlignmentCenter;
[textField3 addTarget:self
               action:@selector(saisieReturn:)
     forControlEvents:UIControlEventEditingDidEndOnExit];
textField3.text = @"00";
[cell.contentView addSubview:textField3];


textField4 = [[UITextField alloc] initWithFrame:CGRectMake(240, (44 - 15) / 2.0, 80, 15)];
textField4.font = [UIFont boldSystemFontOfSize:15];
textField4.tag = i+1;
i++;
textField4.textAlignment = UITextAlignmentCenter;
[textField4 addTarget:self
               action:@selector(saisieReturn:)
     forControlEvents:UIControlEventEditingDidEndOnExit];
textField4.text = @"00";
[cell.contentView addSubview:textField4];

return cell;            
于 2012-11-24T06:30:35.370 に答える