2011-04-27 3 views
3

나는 tableview 셀 안에 UITextfield가있는 UITableViewController가 있습니다. 테이블 뷰를 스크롤하면 텍스트 필드에 사용자가 입력 한 데이터가 사라집니다. 텍스트 필드 데이터를 NSMutableArray에 추가하려고했지만 여전히 작동하지 않습니다. 제발 도와주세요.UITableview 스크롤 UITableviewcell 내부의 텍스트 필드에있는 데이터를 지우기

+0

코드 없이는 해결하기가 매우 어렵습니다. 여기에 코드 스 니펫을 제공하십시오. 답장을 보내 주셔서 감사합니다. –

답변

4

cellForRowAtIndexPath:을 호출하면 반환 할 셀에 표시하려는 데이터가 모두 채워 져야합니다. 따라서 셀에 UITextfield가 포함되어있는 경우 데이터의 해당 행에 맞는 값으로 text 속성을 설정해야합니다.

테이블 셀이 화면 위쪽이나 아래쪽으로 사라지면 UITableViewCell 자체를 다시 사용할 수있게됩니다. 스크롤하면 셀이 사라지고 새 셀이 나타나지만 UITableView 클래스는 UITableViewCell 객체를 다시 사용합니다. cellForRowAtIndexPath:에서 캐시 된 셀을 사용할 때 표시하려는 모든 것을 설정해야합니다 문제의 행에 대해, 그렇지 않으면 테이블에 이상한 동작이 나타날 수 있습니다.

이 정보가 도움이됩니까?

EDIT :

cellForRowAtIndexPath: 여기에서 사용되는 전형적인 패턴의 일례이다. dequeueReusableCellWithIdentifier:을 사용합니다. 이 메서드는 이전에 할당되었지만 사용되지 않는 UITableViewCell이 있으면 반환합니다. 캐시 된 셀이 리턴되지 않으면, 코드는 새로운 셀을 작성하고 행 특정 일 수있는 것과 무관 한 항목으로 설정합니다. 그 다음에는 문제의 행에 필요한대로 셀을 설정합니다.

 
- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *SearchResultsCellIdentifier = @"SearchResultsCellIdentifer"; 

    UITableViewCell *cell = [tableView 
       dequeueReusableCellWithIdentifier:SearchResultsCellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
         reuseIdentifier:SearchResultsCellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    // Your row-specific setup of the cell here 
    // ... 

    return cell; 
} 

이러한 방법에 대한 자세한 내용은 문서를 확인하십시오. 애플과 다른 곳에서는 tableViews를 구현하는 방법에 대해 많은 예제가 있습니다.

+0

나는 이것을 이해할 수 없었다. - 캐시 된 셀을 사용할 때 문제의 행에 표시 할 모든 것을 설정해야합니다. 그렇지 않으면 테이블에 이상한 동작이 표시 될 수 있습니다. 제발 좀 더 분명히 해줄 수있어? 감사합니다 –

+0

편집 내 대답을 추가 참조하십시오. –

+0

다시 한번 감사드립니다. 나는 이것을했다. 하지만 내 문제는 사용자가 데이터를 입력하고 UITableview 셀을 스크롤 할 때 UItextfield 사용자가 입력 한 데이터가 사라집니다. –

관련 문제