Używam następujący kod w moim prezentującej VC zanikać w dziecku modalne VC, i to działa prawidłowo:Jak odrzucić modalne VC z zanikiem animacji?
self.infoViewController.view.alpha = 0.0;
[self.navigationController presentModalViewController:self.infoViewController animated:NO];
[UIView animateWithDuration:0.5
animations:^{self.infoViewController.view.alpha = 1.0;}];
Jednak nie mogę zmusić go do zanikania, próbowałem kilka rzeczy, jest to najnowsza próbowałem że nie działa:
- (IBAction)dismissAction:(id)sender
{
if ([[self parentViewController] respondsToSelector:@selector(dismissModalViewControllerAnimated:)])
{
[[self parentViewController] dismissModalViewControllerAnimated:YES];
self.parentViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.parentViewController.view.alpha = 0.0;
[UIView animateWithDuration:0.5
animations:^{self.parentViewController.view.alpha = 1.0;}];
} else
{
[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
self.presentedViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.presentedViewController.view.alpha = 0.0;
[UIView animateWithDuration:0.5
animations:^{
self.presentedViewController.view.alpha = 1.0;}];
}
}
modalny kontroler widoku jest wyciszony, ale od razu, a nie w okresie czasu jak to jest, kiedy jego wyświetlany.
Jeśli chcesz, aby ten kod był uruchamiany na urządzeniach wcześniejszych niż iOS 5, musisz zabezpieczyć wywołanie 'prezentViewController', a także' dismissModalViewControllerAnimated'. – smparkes
Jeśli widzisz animację zakończenia, to z pewnością brzmi jak ten kod jest wykonywany i jest odrzucany przez inną ścieżkę – smparkes