2010-02-08 3 views
3

JSON을 통해로드중인 UITableView가 있습니다. 그래서 내 논리는 다음과 같이 진행됩니다JSON을 통한 UITableView 업데이트, 애니메이션 삽입 행 삽입

  1. 는 (다시 메인 스레드로 호출 NSOperation 등) JSON 콜백에서
  2. 페치 JSON을 구문 분석, 나의 테이블의 데이터 원본 배열에 새로운 데이터를 삽입합니다.
  3. TableView에서 reloadData를 호출하여 새 데이터를 표시합니다.

내 질문은 : 어떻게 테이블에 새 행의 도착을 ANIMATE 할 수 있습니까? 지금 당장 나는 그것들을 모두 한꺼번에 존재하게 만들었고, 내가하고 싶은 것은 그것들을 움직이게 만드는 것이다.

[self.theTableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight]; 

을하지만 그 날 데이터 소스의 크기보다 다른 것을 업데이트의 크기에 대한 불만을 런타임 제공 :

나는 내가 원하는 것은 사용하는 것입니다 생각합니다.

나는 그 방법이 어떻게 사용되어야하는지에 대해 뭔가 빠졌는가? 누군가가이 패턴을 통해 TableView에 새로운 행을 애니 메이팅하는 예제를 알고 있습니까?

업데이트 : 기본적으로, 나는 다음과 같은 접근 방식으로, 벤의 지침이 덕분에 해결 :와

  1. 시작 [self.theTableView beginUpdates]
  2. JSON에서 항목을 반복 할 때 배열의 처음에 루프를 삽입 할 때마다 인덱스가 증가합니다.
  3. 통화 insertRowsAtIndexPath 이런 루프를 매번 :

    NSIndexPath * indexPath; indexPath = [NSIndexPath indexPathForRow : [self.theChatEntries indexOfObject : message] inSection : 0]; [self.theTableView insertRowsAtIndexPaths : [NSArray arrayWithObject : indexPath] withRowAnimation : NO];

  4. 끝 (End with end) 루프 밖에서의 업데이트.

우트.

답변

0

올바른 길을 가고 있습니다. 당신은 -insertRowsAtIndexPaths : withRowAnimation에 대한 호출을 [self.theTableView beginUpdates]와 [self.theTableView endUpdates]와 함께 포장해야합니다.

+0

시도해 보았지만 JSON의 첫 번째 행을 가져 오면 다음과 같이 충돌합니다. '잘못된 업데이트 : 0 번째 행의 행 수가 잘못되었습니다. 업데이트 후 기존 섹션에 포함 된 행 수 (1)은 업데이트 (0) 이전에 해당 섹션에 포함 된 행 수와 같거나 그 섹션 (삽입 된 0, 삭제 된 0)에서 삽입 또는 삭제 된 행 수를 더하거나 뺀 값이어야합니다. – Genericrich

+0

오른쪽 트랙에서 나를 조종하기 위해 받아 들여짐. 후손에 대한 질문 업데이트. 감사! – Genericrich