Chcę ukryć pasek nawigacji za pomocą animacji, zanim pozwolę, aby kontroler UIViewController zniknął. Dlatego wdrożyliśmy następujące:Jak czekać na zakończenie animacji w widokuDidDisappear?
-(void) viewWillDisappear:(BOOL) animated {
[UIView transitionWithView:self.view
duration:UINavigationControllerHideShowBarDuration
options:UIViewAnimationCurveEaseOut
animations:^{
[self.navigationController setNavigationBarHidden:YES];
}
completion:^(BOOL finished){
NSLog(@"animation finished");
}];
[super viewWillDisappear:animated];
}
Problemem jest to, że viewWillDisappear będzie nadal wykonywać i po prostu wrócić i cały widok odejdzie zanim zakończy animacji. W jaki sposób mogę zatrzymać powrót metody przed zakończeniem animacji (gdzie drukowana jest "animacja zakończona").
Nie możesz tego ożywić. Może zamiast tego szukasz metody 'setNavigationBarHidden: animated:'? –
Nie chcę używać 'setNavigationBarHidden: animated:', ponieważ animuje się inaczej w iOS 4 (przesuwa się w lewo) i iOS 5 (przesuwa się w kierunku do góry). W każdym razie nie ma to znaczenia, ponieważ umieszczenie 'setNavigationBarHidden: animated:' w bloku 'viewWillDisappear' nadal będzie oznaczać, że metoda powróci przed zakończeniem animacji. Sądzę, że potrzebne są tu dwa wątki? –