2011-10-19 2 views
10

나는 뷰를 새로 고칠 때 지워야 할 NSMutableArrays 몇 개가 있습니다. 그러나 [array removeAllObjects];으로 지우려고하면 index beyond bounds error으로 인해 내 tableview가 충돌합니다. 모든 내가 새로 고침 할 배열을 지우고 viewDidLoad에서 tableview 채우기 위해 같은 함수를 호출합니다. [tableView reloadData]은 메서드의 마지막 줄까지 호출되지 않습니다.새로 고침을 위해 NSMutableArray를 지우십시오.

EDIT :이 문제는 다음과 같습니다. 외부 라이브러리를 새로 고치기 위해 끌어 오기를 사용하고 테이블을 위로 올려 놓으면 테이블이 튀어 나와 UITableView가 다음 셀을로드하려고 시도합니다. 그것은 배열이 지워지기 때문에 기울어지지 않으며 여전히로드 중입니다.

답변 : 배열에서 removeAllObjects를 실행하고 즉시 self.tableView reloadData를 수행 한 다음 나머지 작업을 계속하십시오.

+0

내 테이블보기에서 세포를 삭제 우리가 코드 – Nekto

답변

38

문제가있는 경우 numberOfRowsInSection이 반환되고 데이터 소스 배열이 비어있을 수 있습니다.

[array removeAllObjects]numberOfRowsInSectionreturn [array count]으로 전화하면됩니다.

문제가 해결되기를 바랍니다. 행운을 빌어 요!!!

+0

가 많은 남자 : – Supertecnoboff

+0

이 removeAllObjects 동일한 릴리스 목적인가요 감사 표시? –

0

어레이를 새로 고칠 때 먼저 어레이가 오브젝트인지 확인하십시오 (&). 그런 다음 어레이를 다시 초기화하고 릴리스하십시오.

3

나는 다음과 같은 manner-

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init]; 
      for(unsigned int i = 0; i < [self.array count]; i++) 
      { 
       [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
      } 

[self.tableView beginUpdates]; 
[self.array removeAllObjects]; 
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft]; 
[self.tableView endUpdates]; 
[indexPathsToDelete release]; 
관련 문제