두 섹션 (상단 섹션과 하단 섹션)이있는 UITableView가 있습니다. 항목이 상단 섹션 (섹션 0)에서 "선택 해제"되면 항목을 하단 섹션 (섹션 1)으로 이동하고 그 반대도 마찬가지입니다. 모든 것이 애니메이션 작업에 크게 효과적입니다.reloadSections 문제 : withRowAnimation 애니메이션
다음을 사용하고 있지만 행 이동이 느립니다. 다른 앱에서 더 나은 결과를 얻었습니다. 상단 섹션의 행을 맨 아래 섹션에 깨끗하게 애니메이트하고 맨 아래 섹션의 행을 맨 위에있는 섹션에 확인하거나 선택하지 않을 때 깨끗하게 애니메이션을 적용하고 싶습니다.
멋진 부드러운 애니메이션을 제작하려면 어떻게해야합니까?
편집 :
문제점을 발견했습니다. 이 방법 대신에 다음과 같이 작성해야합니다.
//NSIndexSet *sectionIndexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)];
// set the guests arrival status and use animation
[guestList beginUpdates];
if (!guest.didArrive) {
[guest setDidArrive:YES];
[guestList reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationBottom];
} else {
[guest setDidArrive:NO];
[guestList reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationTop];
}
[guestList endUpdates];
[guestList reloadData];
내가 주석 처리 한 첫 번째 줄에 유의하십시오. 나는 원래 이것을 첨가하는 것을 게을리했다. 보시다시피 제대로 구축되지 않은 NSIndexSet을 사용하고있었습니다.
이것은 정답입니다. [tableView reloadData]가 자동으로 트리거되는 이유를 이해하지 못합니다. 이 기능이 넘쳐서는 안됩니까? – Benjamin
Dude, reloadData를 호출하면 "reloadSections"를 수행하는 모든 코드와 그와 같은 것들이 쓸모 없게됩니다. ReloadData는 모든 것을 다시로드합니다. 그래서 당신은 reloadData를하거나 또는 reloadSections/reloadRows/etc를 수행하여 테이블의 어느 부분을 다시로드 할 것인지를 선택하십시오. –