问题
I have a custom UIViewControllerAnimationTransition
class created already, and need to make this animate a UITabBarController
when it switches tabs.
The tabBarController
does not use the regular tab bar, though. I have a custom implementation that acts like it, and when a button is pressed, it calls this code:
tabBarController.selectedIndex = index
Currently I have the tabBarController
(subclass) as the delegate for its own transitionDelegate
. The delegate method animationControllerForPresentedController
is never actually called, though.
Is it fine for the tab bar controller to be its own delegate? If so, why is the transition code never actually called?
回答1:
animationControllerForPresentedController
is the wrong approach for the tab bar controller.
In the UITabBarController subclass, adopt the UITabBarControllerDelegate
protocol and set it as its own delegate
. Then, use tabBarController: animationControllerForTransitionFromViewController: toViewController:
to return the custom UIViewControllerAnimatedTransitioning
object.
To get a better visualization, look at VCTransitionsLibrary in the TabBarDemo folder.
回答2:
Did you use these delegate methods like this?
@interface BTSlideInteractor : NSObject <UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate>
- (IBAction)showModalButtonWasTouched:(id)sender
{
BTSlideInteractor *interactor = [[BTSlideInteractor alloc] init];
interactor.presenting = YES;
BTModalViewController *modalController = [self.storyboard instantiateViewControllerWithIdentifier:@"ModalViewController"];
modalController.modalPresentationStyle = UIModalPresentationCustom;
modalController.transitioningDelegate = interactor;
[self presentViewController:modalController animated:YES completion:nil];
}
Use this link for Reference: https://github.com/brightec/CustomViewControllerTransition/blob/master/test/BTViewController.m
If you didnt find the solution kindly add your codes.
来源:https://stackoverflow.com/questions/24923625/transition-delegate-for-uitabbarcontroller-animation