2013-12-16 3 views
0

처음에는 하나의 사용자 정의 셀을로드하는 tableView가 있습니다. 셀에는 사용자가 수정할 수있는 텍스트 컨트롤과 세그먼트 컨트롤이 있습니다. 또한 셀 단추를 추가하면 이전 셀 아래에 다른 사용자 정의 셀이 추가됩니다. 사용자는 이러한 사용자 정의 셀을 최대 15 개까지 추가 할 수 있습니다. 처음 몇 개의 셀이 결국 화면에서 사라지고 새로운 셀이 만들어지면 index.row 위치 0, 1, 2 등의 동일한 셀이 생성됩니다.dequeueReusableCellWithIdentifier에 대한 해결 방법

예 : 사용자가 index.row 위치 0에있는 사용자 정의 셀의 텍스트 필드에 "Test"를 입력합니다. 이제 해당 셀이 화면을 벗어나고 사용자가 새 셀을 추가하면 그 원래 셀을 "Test"와 같은 모든 textfield.text 값. 그리고 새 셀의 textfield.text 값을 "Demo"라고 말하도록 수정하면 index.row 위치의 텍스트 필드가 0으로 변경됩니다.

이제 dequeueReusableCell이 어떻게 작동하는지 알았습니다. 그것은 화면 밖에있는 세포를 잡습니다. 하지만 어떻게이 문제를 해결해야합니까? 그리고 매번 고유 한 셀을 생성하십시오.

* 편집 이것은 내가 새 셀을 삽입 한 방법입니다.

/* create cell and add to array */ 
NSString *CellIdentifier1 = @"cell"; 
CustomCell *customCell = (CustomCell*)[self.myTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 

/* save cell to array */ 
[self.fetchCellArray addObject:customCell]; 

/* Add cell in table */ 
NSIndexPath *indexPath2 = [NSIndexPath indexPathForRow:deleteInsertIndex inSection:0]; 
     [self.myTableView insertRowsAtIndexPaths:@[indexPath2] withRowAnimation:UITableViewRowAnimationAutomatic]; 
+1

왜 고유 한 셀을 만들어야합니까? 위로 스크롤하면 셀을 다시 큐에서 빼내고 올바른 텍스트를 그 셀에 놓습니다. –

+0

데이터를 어디에 저장합니까? 배열에 저장 한 다음 셀을 dequeue하면 배열에서 문자열을 가져 와서 셀의 레이블을 해당 문자열로 설정하면됩니다. –

답변

2

배열 내에 셀을 저장하면 안됩니다. 배열의 데이터 (또는 원하는 것으로 생각되는 다른 모든 저장 공간)에 셀의 데이터를 저장하고 배열에서 데이터를 사용하여 대기중인 셀을 업데이트해야합니다.

예를 들어 사용자가 "Test"를 추가하면 배열에 색인 0이 추가됩니다. 사용자가 "Demo"를 추가하면 배열의 색인 1에 추가됩니다. 이제 사용자가 점점 더 많은 문자열을 추가하고 배열에 모두 추가합니다. 사용자가 맨 위로 스크롤하고 섹션 0 행 1에 대해 셀을 제공하라는 메시지가 표시되면 셀 (모든 셀)을 대기열에서 제외하고 인덱스 1의 배열 값에 따라 레이블을 설정합니다. wise for cell 섹션 0에서 인덱스 0 - 배열은 "Test"를 반환합니다.

0

보기에서 데이터를 올바르게 분리하지 못했습니다. [tableView:(TableView*)tableview cellForRowAtIndexPath:(NSIndexPath*)indexPath]에는 배열에 저장하는 텍스트로 셀을 채울 수 있도록 각 셀에 텍스트 항목 배열이 있어야합니다. 사용자가 텍스트를 업데이트하면 배열을 업데이트합니다. 셀을 dequeue 할 때 더티라고 가정하고 이미 텍스트가 포함되어 있으므로 배열의 끝에 빈 문자열 항목을 새로 추가하고 새 셀의 텍스트를 빈 문자열로 설정하십시오. 그게 전부입니다.

  • 모든 대기열 세포는 그래서 그들에 대한 모든
  • 배열과 같은 별도의 객체의 셀에 대한 데이터를 유지 기본값으로 설정해야합니다 재활용 가정하자 당신이 할 수있는 설정 어떤 인덱스 경로에서 특정 셀을되도록 해당 색인 경로에 대한 데이터가 있어야합니다.
관련 문제