2014-10-22 6 views
5

Voglio utilizzare UIPresentationController personalizzato. Per quando voglio mostrare nuova scena io chiamo questo codicePerché non chiamare il metodo presentationControllerForPresentedViewController di UIViewControllerTransitioningDelegate?

UIViewController *cv = [[...]]; 

cv.transitionManager=[[MyTransition alloc] init]; 
cv.transitioningDelegate=actionSheet.transitionManager; 
cv.modalTransitionStyle = UIModalPresentationCustom; 

[self presentViewController:cv animated:YES completion:^{ 

}]; 

il mio manager di transizione ha metodi:

#pragma mark - UIViewControllerTransitioningDelegate 

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source{ 
    return self; 
} 

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed{ 
    return self; 
} 

- (id <UIViewControllerInteractiveTransitioning>)interactionControllerForPresentation:(id <UIViewControllerAnimatedTransitioning>)animator{ 
    return nil; 
} 

- (id <UIViewControllerInteractiveTransitioning>)interactionControllerForDismissal:(id <UIViewControllerAnimatedTransitioning>)animator{ 
    return self; 
} 


- (UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(UIViewController *)presenting sourceViewController:(UIViewController *)source { 
    MyPresentationController *presentationController = [[MyPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting]; 
    return presentationController; 
} 

ma il metodo presentationControllerForPresentedViewController non chiama!

Perché?

risposta

9

Si chiamerà solo se il vostro presente un controller della vista utilizzando lo stile UIModalPresentationCustom presentazione

+0

lui sta usando UIModalPresentationCustom – litso

+0

@litso davvero. Non so come mi sia mancato e perché la mia risposta sia stata accettata. È possibile che l'autore abbia implementato i metodi UIViewControllerTransitioningDelegate, ma non conforme a questo protocollo. – Silmaril

6

modalPresentationStyle invece di modalTransitionStyle è una risposta corretta :)

+1

Wow, ho lavorato con transizioni personalizzate per un po 'e talvolta le cose si sono fatte strane e non sapevo perché. Ci sono modalPresentationStyle e modalTransitionStyle ... –