2009-11-04 2 views
2

내 테이블 뷰 중 하나의 편집 모드에서 섹션에서 한 행을 삭제합니다. 아래 섹션에는 헤더가 있습니다. 위의 섹션에서 행을 삭제하면 아래 섹션 헤더가 중복됩니다. 따라서 두 개의 머리글 제목이 하나씩 있습니다. 내가 잘못 한 일의위 섹션에서 행이 삭제되면 섹션 아래의 머리글이 복제됩니다.

[self.tableView beginUpdates];  
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];    
NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(3,1)]; 
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade]; 
[indexSet release]; 
[self.tableView endUpdates]; 

어떤 아이디어 :

나는 또한이 아무 소용 삭제 한 후 섹션의 다시로드를 강제로 시도?

제거하지 못한 헤더가 "보이지"않는 것도 흥미 롭습니다. 테이블 뷰의 내용을 오른쪽으로 스크롤하고 뒤로 스냅하면 맨 위의 머리글 뷰만 보입니다. 제거 된 헤더는 항상 무시됩니다.

답변

1

다른 방법으로 시도했지만 (주석 처리 된 코드) 마침내 시작 및 종료 업데이트 기술이 작동합니다. 감사 Megasaur.

[self.tableView beginUpdates]; 
[tableView reloadSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationFade]; 
[tableView scrollRectToVisible:[tableView rectForSection:section] animated:YES]; 
//[tableView setNeedsDisplay]; 
//[self.view setNeedsDisplay]; 
[self.tableView endUpdates]; 
0

여러 섹션을 사용하지는 않았지만 하나의 섹션에서 비슷한 문제가 발생했습니다. 기본 데이터 소스 (키의 항목 수)를 변경하지 않으면 테이블 뷰가 제대로 렌더링되지 않습니다. 디스플레이를 업데이트하기 전에 기본 데이터 소스에 행이 제거되었는지 확인해야합니다.

0

표 섹션 축소/확장이 제대로 작동하지 않는 것 같습니다. 그것은 효과가있을 것입니다. 내 목표를 구현하기 위해 다른 접근 방식을 택했습니다. 다른 모든 뷰와 테이블을 포함하기 위해 scrollview를 사용합니다. 이 방법으로 각 섹션 (지금보기)에 별도의보기 컨트롤러를 사용했기 때문에 셀 선택을 캡처하는 데 문제가 있습니다.

관련 문제