2010-06-14 2 views
1

여러 개의 섹션이있는 tableView이 있습니다. 섹션 (Section)은 하나 개의 행을 포함 할 때, 나는 그 행을 삭제하려고하면, 내 응용 프로그램 충돌이 코드를 실행하는 동안 : 배열은 각각이여러 섹션이있는 UITableView : 섹션이 1 행이고, 행을 삭제하면 앱이 충돌합니다.

*** Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)' 

:

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

나는이 예외가 섹션. 이러한 각 배열에는 행으로 표시 할 객체가 들어 있습니다. 그런 다음이 배열을 포함하는 또 다른 배열이 있습니다.

내가 잘못하고있는 것에 대한 아이디어가 있습니까? 감사합니다. 난 그냥 삭제 배열의 섹션의 제목을 받고 있었기 때문에

OK, 난 그냥,이 충돌 한 tableView: titleForHeaderInSection 방법의 디버거에서 본 .. 그래서 액세스를 시도했다 : 편집

0 객체가있는 배열 ...

답변

0

테이블 뷰에는 소스가 있으며 원본에는 표시되는 섹션과 행의 목록이 들어 있습니다. [tableView deleteRowsAtIndexPaths:withRowAnimation:] 호출을 수행하면 테이블 뷰는 테이블을 업데이트하지만 소스는 동기화되지 않습니다 (방금 삭제 한 행이 있음). 해결 방법은 테이블 뷰 자체를 업데이트하기 전에 원본 (어레이 또는 코어 데이터 등)을 업데이트하는 것입니다.

0

가장 간단한 설명은 빈 배열을 삭제 메서드로 전달하는 indexPath이 nil이라는 것입니다.

확인을 위해 indexPath의 값을 기록하십시오.

+0

를 들어 \t \t 의 printf ("섹션 %의 D, 행 % D \ 없음"indexPath.section, indexPath.row); 여기 로그입니다 : 섹션 : 1, 행 : 0 그래서 더 indexPath이 ... 전무하지 않습니다 – leochab

+0

은 아마 다음 코드에서 다른 곳을보고있다. 지금 당장 게시 한 내용에 문제가 없습니다. – TechZen

0

섹션에 행이 하나만있을 경우 해당 섹션을 삭제해야합니다. 섹션을 삭제하는 코드는 다음과 같습니다. [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop];

관련 문제