2010-05-10 3 views

ответ

1

Это не ответ, который вы хотите услышать, но нет * :(

делегат табличного представления будет реагировать только these methods.

Однако (это немного рубить, но) анимации около 0,35 секунд долго вы могли бы просто назвать performSelector:withObject:afterdelay:...

* по крайней мере, насколько я знаю...

+0

Является ли это надежным/согласованным? Что произойдет, если цикл выполнения задержится? – akaii

+0

Это совсем несовместимо - это немного взломать! Если цикл выполнения задерживается, вы получите паузу между завершением анимации и любым действием, которое вы хотите выполнить. – deanWombourne

4

на самом деле, там нЕ, кажется, способ г o это (хотя и не так прямолинейно, как должно быть!).

Пока нет прямого доступа к какому-то обратный вызову, оказывается, что 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: методов просто добавляет/удаляет подразделов, которые должны быть свернутыми или развернутыми. Ключевым моментом здесь является то, что при использовании этого кода я, наконец, могу свернуть один из подсекций THEN развернуть следующий подраздел. Раньше оба анимации происходили одновременно, что было визуально непривлекательным.

Надеюсь, это поможет вам! Я долго пробовал это, ударяя головой о стену, пока не нашел это.

Это написано на iOS 6.0. Я также очень надеюсь, что в какой-то будущей версии это обходное решение/hack устарело!

+0

Это кажется очень эффективным решением. благодаря – LightningStryk

Смежные вопросы