2013-11-14 7 views
1

내 앱의 첫 번째 섹션 (섹션 0)에서 두 행 중 하나를 선택할 수 있습니다. 하나의 행을 선택하면 섹션 2 (섹션 1)의 행이 다시로드됩니다. 선택 항목을 여러 번 변경하면 자리 표시자가 사라지지 않습니다. (1 ~ 2 번 선택을 변경하면 자리 표시자가 사라짐). 내가 도대체 ​​뭘 잘못하고있는 겁니까? 여기UITextField 자리 표시 자

Screenshot

내가 셀에서의 UITextField를 만드는 방법은 다음과 같습니다 주석의 @ rmaddy 떨어져가는

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; 
      } 
+1

셀을 다시 사용할 수 있습니다. 셀을 다시 사용할 때 텍스트 필드를 계속 추가 할 가능성이 있습니다. 셀당 한 번만 텍스트 필드를 추가해야합니다. – rmaddy

+0

어떻게 할 수 있습니까? – iCode

+1

이미 있으면 추가하지 마십시오. 간단하게 로직을 코딩하십시오. – rmaddy

답변

2

, 세포를 재사용된다. 따라서 셀 내용보기에 하위보기를 추가하면 이전에 사용했던 내용과 쌓이게됩니다. 추가 하위 뷰를 추가하기 전에 contentView 셀에서 모든 하위 뷰를 제거하면됩니다.

for (UIView *subview in cell.contentView.subviews) { 
    [subview removeFromSuperview]; 
} 
+0

덕분에 완벽하게 작동하고 새로운 것을 배웠습니다. – iCode