На самом деле, есть ДЕЛАЕТ , кажется, способ сделать это (хотя и не так просто, как следовало бы!).
Хотя прямого доступа к какому-либо обратному вызову нет, похоже, что UITableView
анимация происходит в пределах CAAnimation
. Поэтому простой доступ к completionBlock
из CAAnimation
, кажется, дает вам то, что вы хотите.
Вот как я получил 2 анимации для цепочки в моем UITableView
подклассе:
#pragma mark - Section expanding/collapsing
- (void)toggleSection:(NSInteger)index {
int expandedSection = [self ExpandedSection];
if (expandedSection != NO_EXPANDED_SECTIONS_INDEX) {
[self beginUpdates];
[self collapseSection:@(expandedSection)];
[CATransaction setCompletionBlock:^{
if (expandedSection != index) {
[self beginUpdates];
[self expandSection:@(index)];
[self endUpdates];
}
}];
[self endUpdates];
} else {
[self expandSection:@(index)];
}
}
Код в методах collapseSection:
и expandingSection:
просто добавляет / удаляет подразделы, которые необходимо свернуть или развернуть. Ключевой момент здесь, однако, заключается в том, что при использовании этого кода я наконец могу свернуть один подраздел , ТО развернуть следующий подраздел. Раньше обе анимации происходили одновременно, что визуально не было привлекательным.
Надеюсь, это поможет вам! Я долго боролся с этим, бился головой о стену, пока не нашел это.
Это написано против iOS 6.0. Я также очень надеюсь, что в какой-то будущей версии этот обходной путь / хак устареет!