UITabBarController

UITabBarController : UIViewController
本身是 View,被集成在 UITabBarController 中使用

属性

  • 基础属性
    NSArray *arr = self.tabBarController.viewControllers;// 所有 vc 
    UITabBar *tabBar = self.tabBarController.tabBar;// tabBar,可展开研究深入内容    
  • 选中相关
    UIViewController *select = self.tabBarController.selectedViewController;// 当前选择 vc
    NSInteger index = self.tabBarController.selectedIndex;// 当前选择 index 
  • 更多相关
    UINavigationController *nav = self.tabBarController.moreNavigationController;//更多导航
    NSArray *arr2 = self.tabBarController.customizableViewControllers;// 可排序的 vc

方法

    // 直接修改 vc
    [self.tabBarController setViewControllers:@[testVC1, testVC2]];

代理 UITabBarControllerDelegate

  • 点击项

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    NSLog(@"shouldSelectViewController");
    return YES;
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"didSelectViewController");
}
  • 更多项

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers {
    NSLog(@"willBeginCustomizingViewControllers");
}

- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
    NSLog(@"willEndCustomizingViewControllers");
}

- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
    NSLog(@"didEndCustomizingViewControllers");
}
  • 屏幕旋转

暂不清楚使用方式;

// 支持的方向
- (UIInterfaceOrientationMask)tabBarControllerSupportedInterfaceOrientations:(UITabBarController *)tabBarController {
    return UIInterfaceOrientationMaskLandscapeLeft;
}

// 优先的方向
- (UIInterfaceOrientation)tabBarControllerPreferredInterfaceOrientationForPresentation:(UITabBarController *)tabBarController {
    return UIInterfaceOrientationLandscapeRight;
}
  • 自定义转场,酷炫

UIViewControllerTransitioning.h 中深入了解

// 添加交互转场,例如左侧边侧滑返回,可以根据手势实现是否转场的中间状态
- (nullable id <UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController
                                interactionControllerForAnimationController: (id <UIViewControllerAnimatedTransitioning>)animationController {
    return [[TestInteractiveTransition alloc] init];
}

// 普通动画转场
- (nullable id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController
                     animationControllerForTransitionFromViewController:(UIViewController *)fromVC
                                                       toViewController:(UIViewController *)toVC {
    return [[TestTransition alloc] init];
}

拓展 UIViewController (UITabBarControllerItem)

  • 属性
self.tabBarItem;
self.tabBarController;