2016-07-21 6 views
0

Ich versuche, eine benutzerdefinierte Tabbar-Animation erstellen, wenn ein Benutzer auf eine Tab-Leiste-Schaltfläche tippt.iOS/Objective c - UITabBarControllerDelegate - Benutzerdefinierte Registerkarte Animation Delegaten nicht

Ich habe eine UITabBarController Unterklasse implementiert, die UITabBarControllerDelegate implementiert

hier ist die .m

#import "MYCustomTabBarControler.h" 


@interface MYCustomTabBarControler() 

@end 

@implementation MYCustomTabBarControler 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.delegate = self; // I set the delegate as self 

} 


#pragma mark - UITabBarControllerDelegate 

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController { 

    //This is called so I know the delegate is working 
    NSLog(@"The tabBarController delegate is set and working"); 
    return YES; 
} 

//This delegate method is never called 
- (id<UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController 
      UIViewControllerAnimatedTransitioning:(UIViewController *)fromVC 
              toViewController:(UIViewController *)toVC { 


    MYBarTransition *animator = [MYBarTransition new]; 
    return animator; 

} 

//This delegate method is never called 
- (id<UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController 
        interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransitioning>)animationController { 

    MYBarTransition *animator = [MYBarTransition new]; 
    return animator; 
} 

Aus irgendeinem Grund die Delegatmethoden verantwortlich für den Übergang sind nicht genannt. Ich habe die docs gelesen und kann keinen Grund sehen, dass sie nicht angerufen werden würden.

Ich habe meine Delegierten richtig eingestellt und bestätigt es ist durch die Umsetzung der shouldSelectViewController Methode

arbeiten Was ich hier fehlt?

+0

Wann erwarten Sie, dass es aufgerufen wird? – beyowulf

+0

Sollte es nicht aufgerufen werden, wenn der Benutzer auf die Schaltfläche der Registerkartenleiste klickt? – Zigglzworth

+0

Ich erwarte, dass es aufgerufen wird, wenn ein Benutzer auf die Schaltfläche der Registerkartenleiste klickt .. aber es ist nicht – Zigglzworth

Antwort

3

Ich denke, Sie verwenden die falsche Delegate-Methode für das, was Sie erreichen möchten. Verwenden Sie:

- (nullable id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController 
      animationControllerForTransitionFromViewController:(UIViewController *)fromVC 
               toViewController:(UIViewController *)toVC; 

Dies wird aufgerufen, wenn der Benutzer auf eine andere Registerkarte klickt.

+0

LOL. Ja. Ich werde meinen Kopf für ein paar Stunden in Schande legen – Zigglzworth

Verwandte Themen