1

私のアプリでは、最初のセクション (セクション 0) の 2 つの行のいずれかを選択できます。行を 1 つ選択すると、セクション 2 (セクション 1) の行がリロードされます。選択を数回変更しても、プレースホルダーが消えなくなりました。(選択を 1 回または 2 回変更すると、プレースホルダーが消えます)。私は何を間違っていますか?

スクリーンショット

セルに UITextField を作成する方法は次のとおりです。

if (!self.selectedType) {
            NSString *string = [NSString stringWithFormat:@"%@: ", self.LessonToDisplay];
            int where = (string.length*5)+35;

            self.textField = [[UITextField alloc]initWithFrame:CGRectMake(where, 10, 150, 25)];
            self.textField.tag = 42;
            self.textField.font = [UIFont fontWithName:@"Helvetica-Neue" size:16];
            self.textField.textColor = [UIColor blackColor];
            if([self.textField.text isEqualToString:@""]){
                self.textField.placeholder = @"Beschreibung";
            }
            [cell.contentView addSubview:self.textField];
            cell.textLabel.text = [NSString stringWithFormat:@"%@: ", self.LessonToDisplay];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            } else {
                NSString *string = [NSString stringWithFormat:@"%@: Prüfung", self.LessonToDisplay];
            int where = (string.length*5.8)+57;
            self.textField2 = [[UITextField alloc]initWithFrame:CGRectMake(where, 10, 150, 25)];
            self.textField2.tag = 43;
            self.textField2.font = [UIFont fontWithName:@"Helvetica-Neue" size:16];
            self.textField2.textColor = [UIColor blackColor];
                if([self.textField2.text isEqualToString:@""]){
                    self.textField2.placeholder = @"Beschreibung";
                }
            [cell.contentView addSubview:self.textField2];

            cell.textLabel.text = [NSString stringWithFormat:@"%@: Prüfung ", self.LessonToDisplay];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            }
4

1 に答える 1

2

@rmaddy のコメントから外れて、セルは再利用されます。そのため、サブビューをセルのコンテンツ ビューに追加すると、以前の使用からスタックされます。サブビューを追加する前に、セル contentView からすべてのサブビューを削除するだけです。

for (UIView *subview in cell.contentView.subviews) {
    [subview removeFromSuperview];
}
于 2013-11-14T20:52:11.380 に答える