RQMainTabBarViewController.m 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //
  2. // RQMainTabBarViewController.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/21.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. // 主界面控制器
  8. #import "RQMainTabBarViewController.h"
  9. #import "RQBaseNavigationController.h"
  10. @interface RQMainTabBarViewController ()
  11. @property (nonatomic, readonly, strong) RQMainTabBarViewModel *viewModel;
  12. @end
  13. @implementation RQMainTabBarViewController
  14. @dynamic viewModel;
  15. #pragma mark - System
  16. - (void)viewDidLoad {
  17. [super viewDidLoad];
  18. // 初始化所有的子控制器
  19. [self rq_setupAllChildViewController];
  20. // set delegate
  21. self.tabBarController.delegate = self;
  22. }
  23. #pragma mark - Private Method
  24. - (void)rq_setupAllChildViewController {
  25. NSArray *titlesArray = @[@"考试", @"社区", @"计时", @"我的"];
  26. NSArray *imageNamesArray = @[@"考试灰",
  27. @"tabbarImg2",
  28. @"计时灰",
  29. @"我的灰"
  30. ];
  31. NSArray *selectedImageNamesArray = @[@"考试蓝",
  32. @"tabbarImg2",
  33. @"计时蓝",
  34. @"我的蓝"
  35. ];
  36. /// 首页-考试
  37. RQBaseNavigationController *homePageNavigationController = ({
  38. RQHomePageViewController *homePageViewController = [[RQHomePageViewController alloc] initWithViewModel:self.viewModel.homePageViewModel];
  39. RQTabBarItemTagType tagType = RQTabBarItemTagTypeHomePage;
  40. /// 配置
  41. [self rq_configViewController:homePageViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  42. /// 添加到导航栏的栈底控制器
  43. homePageViewController.hidesBottomBarWhenPushed = NO;
  44. [[RQBaseNavigationController alloc] initWithRootViewController:homePageViewController];
  45. });
  46. /// 计时
  47. RQBaseNavigationController *timePageNavigationController = ({
  48. // TimingBaseVC *timePageViewController = [[TimingBaseVC alloc] initWithViewModel:self.viewModel.timeViewModel];
  49. RQTimeViewController *timePageViewController = [[RQTimeViewController alloc] initWithViewModel:self.viewModel.timeViewModel];
  50. RQTabBarItemTagType tagType = RQTabBarItemTagTypeTime;
  51. /// 配置
  52. [self rq_configViewController:timePageViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  53. /// 添加到导航栏的栈底控制器
  54. timePageViewController.hidesBottomBarWhenPushed = NO;
  55. [[RQBaseNavigationController alloc] initWithRootViewController:timePageViewController];
  56. });
  57. /// 我的
  58. RQBaseNavigationController *profileNavigationController = ({
  59. //#if DEBUG
  60. RQProfileViewController *profileViewController = [[RQProfileViewController alloc] initWithViewModel:self.viewModel.profileViewModel];
  61. //#else
  62. // FunctionVC *profileViewController = [[FunctionVC alloc] initWithViewModel:self.viewModel.profileViewModel];
  63. //#endif
  64. RQTabBarItemTagType tagType = RQTabBarItemTagTypeProfile;
  65. /// 配置
  66. [self rq_configViewController:profileViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  67. profileViewController.hidesBottomBarWhenPushed = NO;
  68. [[RQBaseNavigationController alloc] initWithRootViewController:profileViewController];
  69. });
  70. /// 添加到tabBarController的子视图
  71. self.tabBarController.viewControllers = @[homePageNavigationController, timePageNavigationController, profileNavigationController];
  72. /// 配置栈底
  73. [RQSharedAppDelegate.navigationControllerStack pushNavigationController:homePageNavigationController];
  74. }
  75. - (void)rq_configViewController:(UIViewController *)viewController imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName title:(NSString *)title itemTag:(RQTabBarItemTagType)tagType {
  76. UIImage *image = [[UIImage imageNamed:imageName] tint:[UIColor grayColor]];
  77. image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  78. viewController.tabBarItem.image = image;
  79. viewController.tabBarItem.tag = tagType;
  80. UIImage *selectedImage = [[UIImage imageNamed:selectedImageName] tint:RQ_MAIN_COLOR];
  81. selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  82. viewController.tabBarItem.selectedImage = selectedImage;
  83. viewController.tabBarItem.title = title;
  84. NSDictionary *normalAttr = @{NSForegroundColorAttributeName:RQ_MAIN_TEXT_COLOR_2,
  85. NSFontAttributeName:RQRegularFont_15};
  86. NSDictionary *selectedAttr = @{NSForegroundColorAttributeName:RQ_MAIN_COLOR,
  87. NSFontAttributeName:RQRegularFont_15};
  88. [viewController.tabBarItem setTitleTextAttributes:normalAttr forState:UIControlStateNormal];
  89. [viewController.tabBarItem setTitleTextAttributes:selectedAttr forState:UIControlStateSelected];
  90. [viewController.tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, 0)];
  91. [viewController.tabBarItem setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
  92. }
  93. #pragma mark - UITabBarControllerDelegate
  94. - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
  95. if ([viewController.tabBarItem.title isEqualToString:@"我的"] || [viewController.tabBarItem.title isEqualToString:@"计时"]) {
  96. return RQ_USER_MANAGER.isShouldLogin;
  97. } else {
  98. return YES;
  99. }
  100. }
  101. - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
  102. NSLog(@"viewController %@ %zd",viewController,viewController.tabBarItem.tag);
  103. [RQSharedAppDelegate.navigationControllerStack popNavigationController];
  104. [RQSharedAppDelegate.navigationControllerStack pushNavigationController:(UINavigationController *)viewController];
  105. if ([viewController.tabBarItem.title isEqualToString:@"计时"] && [RQ_USER_MANAGER isQzVideo] && !RQ_COMMON_MANAGER.isQzLook) {
  106. RQNewFeatureViewModel *newFeatureViewModel = [[RQNewFeatureViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewCommonValueKey : @"quanzhou"}];
  107. [RQ_APPDELEGATE.services presentViewModel:newFeatureViewModel animated:YES completion:^{
  108. }];
  109. }
  110. }
  111. @end