Проверка завершенной анимации контроллера навигации - PullRequest
1 голос
/ 14 марта 2012

Теперь я знаю, что если вы помещаете контроллер представления в контроллер навигации с анимацией, вы должны дождаться завершения этой анимации, прежде чем нажимать другой контроллер представления, в противном случае вы получите предупреждения и, возможно, неожиданные результаты.

Как проверить, завершилась ли анимация контроллера навигации, чтобы избежать этой проблемы?

Спасибо

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:    (NSIndexPath *)indexPath
{ 
    // ...


    //Make sure animation has completed before sending message below


[[self navigationController] pushViewController:detailsViewController animated:NO];

//...

}

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

Если вы хотите использовать один VC за один раз (хорошее движение вправо по многим VC), вы можете реализовать UINavigationControllerDelegate в классе контроллера (это сделает делегат приложения), назначьте его себе * *,UINavigationController будет вызывать navigationController:didShowViewController:animated: после каждого нажатия.

0 голосов
/ 31 января 2013

Я использовал альтернативный метод, который работал довольно хорошо для меня.Просто оберните вызов pushViewController:animated: в аргумент animations: [UIView animateWithDuration:animation:completion.Поместите все, что вам нужно, чтобы выполнить по завершении, например, нажав на последующий контроллер, что я и делаю, в completion:.

В моем случае, я запускаю все это в методе, который принимает массив (NSMutableArray) со списком контроллеров, которые нужно выдвинуть в качестве аргумента.В блоке completion: метод извлекает первый элемент из массива (objectAtIndex:0 и removeObjectAtIndex:0) и вызывает себя вместе с остатком массива.

Это забавно продолжение-прохождение-стиль реализация :) Однако следует отметить, что в конце анимации содержимое нового контроллера навигации может загружаться не полностью, поэтому этот метод надежен только в том случае, если ваши нажатия не зависят от этого содержимого.

...