2012-01-09 4 views
2

약간의 문제가 있습니다.리로드시 편집 컨트롤이 사라집니다.

그룹화 모드에서 UITableView가 있습니다. 테이블은 항상 편집 모드에 있도록 설정되어 있습니다. 이는 정상적으로 작동합니다. 내 모든 행은 삭제 가능합니다. 행은 들여 쓰기되어 있으며 내 모든 UITableViewCellEditControls가 훌륭하게 표시됩니다. 합니다 (

deleteRowsAtIndexPaths: 
reloadRowsAtIndexPaths: //needs to get called because of table aesthetics 

를 다시로드가 발생하면 (난 그냥 간단한 reloadData을 시도했습니다, 너무) 내 UITableViewCellEditControls의 모든 :

문제 행이 실제로 내가 전화 한 후 내 데이터 소스를 업데이트하고 삭제됩니다 때입니다 마이너스 기호 등이있는 빨간색 원) 사라집니다! 행은 여전히 ​​들여 쓰여졌지만 사라졌습니다.

은이 게시물에 제안을 시도했다 :

UITableViewController canceling Edit mode animation when calling [table reloadData] inside (void)setEditing

하지만 행운을.

도움이 될 것입니다.

+0

사용자 정의 UITableViewCell을 사용하고 있는데 문제의 일부일 수 있다고 생각했지만 ... 가지 않습니다. 방금 전 일반 UITableViewCell을 사용하여 주변 것들을 변경하고 편집 컨트롤이 여전히 사라집니다. – capikaw

답변

0

코드를 보지 않고 몇 가지 제안 사항이 있습니다.

애플의 UITableView Class Reference에 따르면 ReloadData에서, 그것은 말한다 :

콜이 방법은 세포 섹션 머리글과 바닥 글, 인덱스 배열을 포함하여 테이블을 구성하는 데 사용되는 모든 데이터를 다시로드 등을 에. 효율성을 위해 표보기는 표시되는 행만 다시 표시합니다. 테이블을 다시로드 한 결과 축소되면 오프셋을 조정합니다. 테이블 뷰의 대리자 또는 데이터 소스는 테이블 뷰가 데이터를 완전히 다시로드하기를 원할 때이 메서드를 호출합니다. 그것은 특히 beginUpdates 호출 및 삽입 행을 삭제할 때이 호출 할 수 없습니다

EndUpdates 사이 인용문

로 구현 된 애니메이션 블록 내에서, 삽입하거나 행을 삭제 방법에 호출 할 수 없습니다.

개별 셀을 삭제할 수 있도록 허용하므로 다음 메소드가 이미 구현되어 있다고 가정합니다. tableView:editingStyleForRowAtIndexPath:tableView:commitEditingStyle:forRowAtIndexPath: commitEditingStyle에서 이와 같은 방법으로 delete 메소드를 호출해야합니다 :

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

이렇게하면 다시로드 데이터가 필요하지 않습니다. 애니메이션을 보여주고 싶지 않다면 예제에서 보여준 fade 대신 noanimation enumerator를 사용할 수 있습니다. 그러나, 당신은 아직도 당신이 모든 세포의 삭제 후 데이터를 다시로드 할 필요가 있다고 생각하는 경우

, 어쩌면 희망 performSelector:afterDelay:

로 시도,이 TID 비트는 데 도움이!

+0

안녕 Bittu, 정보 주셔서 감사합니다! 재로드 호출이 행 삽입/삭제에서 이루어져서는 안된다는 것을 깨닫지 못했습니다. 왜 테이블이 버그를 일으켰는지에 대한 대답입니다. 문제는 이것입니다 : 나는 그림자가있는 상단, 중간 및 하단 행을 포함하는 그룹화 된 uitableview의 모습을 완전히 사용자 정의하고 있습니다.미적 요구 사항으로 인해 상단 및 하단 행 (특히 그림자 때문에)은 중간 행보다 10 픽셀 더 커야합니다. 이제 사용자가 TOP 행을 삭제하면 두 번째 행이 맨 위 행이됩니다. 즉 높이와 배경 이미지를 업데이트해야합니다 ... 더 쉬운 방법이 있습니까? – capikaw

+0

몇 가지 방법을 사용할 수 있습니다. KVO를 사용하면 위 아래에있는 그림자의 크기를 모니터링하고 그에 따라 조정할 수 있습니다. 또한 섹션 머리글과 바닥 글의 일부로 일부 그림자를 넣을 수있는 방법이있을 수 있으므로 첫 번째 행과 마지막 행에 첨부 된 것처럼 보입니다. 시도해볼 아이디어를 던지십시오. – Bittu

관련 문제