基本的に、このUItableviewは、生成されると2つのセルで構成されます。1つはスコア付きで、もう1つをタッチすると、別のスコアの行が挿入されます。これはすべてうまく機能しますが、スクロールして最初のセルが画面の外に出ると、戻ってきたときにその上に別のセルが追加されます(重ね合わせます)。私は何か間違ったことをしていると思いますdequeueReusableCellWithIdentifier
がaddSubview
、それが何であるか理解できません...
これが私のコードです:
(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向けの開発に不慣れで、最初のアプリのプログラミングで最初の問題に直面しています。私はインターネット全体を探していましたが、同様の問題のあるスレッドを見つけたとしても、なんとか解決することはできません。