2011-02-26 5 views
1

텍스트 필드가 포함 된 사용자 정의 셀이 거의없는 UITable을 사용할 수 있습니다. 그러나 스크롤을 위아래로 움직이면 그 세포들의 순서가 엉망이됩니다.UITableViewCell dequeueReusableCellWithIdentifier가 순서가 맞지 않습니다.

내가 검색 한이 나를 위해 작동하지 않습니다 나는 내가 그들을 위해 사용자 입력을 잡을 필요가 몇 UITextFields 있습니다.

UITableViewCell showing indexpath rows out of order

당신은

+1

WWDC 2010 세션 128, 표보기 마스터 링을 시청해야합니다. Google에서 검색하십시오. 문제는 표 셀의 각 행이 시각적으로 동일하지만 내용이 다르기 때문에 표 셀을 재사용 할 수 있다는 것입니다. 반환하는 표 셀에 모든 행이 아니라 요청 된 색인 경로에 대한 올바른 데이터가 포함되어 있는지 확인해야합니다. 자세한 내용과 예제 코드를 보려면 비디오를보십시오. – Douglas

답변

1

각 셀에 고유 한 식별자를 사용해야하거나 큐 제거 메커니즘을 모두 사용하지 않아도됩니다. 후자를 수행하는 경우 해당 인스턴스 변수에 각 셀에 대한 참조를 저장하거나 인스턴스 변수에 저장된 콜렉션에 모두 추가하십시오.

이 경로를 선택하는 경우 두 가지 방법 중 하나를 수행 할 수 있습니다. 인터페이스 작성기에서 셀을 만들거나 (이미 인터페이스에 중첩 된 텍스트 필드를 가질 수 있으므로 편리 할 것입니다.) .) 콘센트를 사용하여 연결하거나 또는 init... 메서드에서 프로그래밍 방식으로 셀을 만듭니다.

두 경우 모두 더 이상 dequeueReusableCellWithIdentifier:으로 전화하지 않아도됩니다. 대신 이미 만든 셀 인스턴스를 반환 할 수 있습니다.

+0

예 내 요구 사항에 따라 dequeueReusableCellWithIdentifier를 수행하는 고유 한 방법을 구현해야했습니다. 그것은 그 문제를 해결했습니다. 귀하의 의견에 감사드립니다. – Dilshan

+0

당신을 진심으로 환영합니다! 그래서 각 셀에 대해 고유 한 식별자를 사용하게 되었습니까? – jlehr

0

당신은 당신이 원하는 것을 달성하기 위해 코드에서 이와 비슷한 뭔가를 할 수 @Dilshan 감사드립니다.

. 
. 
. 
if(cell == nil) 
{ 
// create your cell in this block of quotes in the cellForRowAtIndexPath: method to avoid making of the cells again, so that your textfield value remain as it is. 
. 
. 
. 
//place all the code in this block only. 
} 
[cell autorelease]; 
return cell; 

죄송합니다. 집에 xcode가 없으므로 특정 코드를 제공해 드릴 수 없습니다.

그러나 나는 생각합니다.
건배.

+0

답장을 보내 주셔서 감사합니다. 나는 다음과 같이한다. 내 다음 게시물을 참조하십시오. – Dilshan

0

여기 내 코드입니다. CustomTextFieldCell은 UITextField가있는 셀입니다. 및 일부 정보. 그러나 스크롤 할 때 채워지는 값과 순서가 변경됩니다.

static NSString *CellIdentifier = @"CustomTextFieldCell"; 
    CustomTextFieldCell *cell = (CustomTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 

     NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTextFieldCell" owner:nil options:nil]; 


     for (id currentObject in topLevelObjects) { 
      if ([currentObject isKindOfClass:[UITableViewCell class]]) { 
       cell = (CustomTextFieldCell *) currentObject; 
       break; 
      } 
     } 
    } 
+0

그냥 메모 - 답변으로 게시하는 대신 원본 질문을 편집하여 보충 정보를 추가하는 것이 좋습니다. – jlehr

+0

의견을 보내 주셔서 감사합니다 jLehr – Dilshan

관련 문제