Voglio nascondere la barra di navigazione utilizzando l'animazione prima di far scomparire un UIViewController. Perciò ho attuato le seguenti:Come aspettare che un'animazione finisca in viewDidDisappear?
-(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];
}
Il problema è che il viewWillDisappear continuerà ad eseguire e solo tornare e tutta la visione andrà via prima del termine di animazione. Come posso interrompere il ritorno del metodo prima del completamento dell'animazione (dove viene stampata l'animazione finita).
Non è possibile animare. Forse invece stai cercando il metodo 'setNavigationBarHidden: animated:'? –
Non voglio usare 'setNavigationBarHidden: animated:' perché si anima in modo diverso in iOS 4 (scorre verso sinistra) e iOS 5 (scorre verso l'alto). Comunque, non importa perché, mettendo 'setNavigationBarHidden: animated:' all'interno del blocco 'viewWillDisappear' significa che il metodo ritorna prima che l'animazione finisca. Penso che forse sono necessari due thread qui? –