// // AVTabBarController.m // AVDemo // #import "AVTabBarController.h" #import "AVHomeViewController.h" #import "AVCallViewController.h" #import "AVVodListViewController.h" #import "AVSettingsViewController.h" #import "AVLoginViewController.h" #import "AVUserManager.h" @interface AVTabBarController () @end @implementation AVTabBarController - (void)viewDidLoad { [super viewDidLoad]; // Create Home tab AVHomeViewController *homeVC = [[AVHomeViewController alloc] init]; UINavigationController *homeNav = [[UINavigationController alloc] initWithRootViewController:homeVC]; homeNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:[UIImage systemImageNamed:@"house"] selectedImage:[UIImage systemImageNamed:@"house.fill"]]; // Create VOD tab AVVodListViewController *vodVC = [[AVVodListViewController alloc] init]; UINavigationController *vodNav = [[UINavigationController alloc] initWithRootViewController:vodVC]; vodNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"点播" image:[UIImage systemImageNamed:@"play.rectangle"] selectedImage:[UIImage systemImageNamed:@"play.rectangle.fill"]]; // Create Call tab AVCallViewController *callVC = [[AVCallViewController alloc] init]; UINavigationController *callNav = [[UINavigationController alloc] initWithRootViewController:callVC]; callNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通话" image:[UIImage systemImageNamed:@"phone"] selectedImage:[UIImage systemImageNamed:@"phone.fill"]]; // Create Settings tab AVSettingsViewController *settingsVC = [[AVSettingsViewController alloc] init]; UINavigationController *settingsNav = [[UINavigationController alloc] initWithRootViewController:settingsVC]; settingsNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"设置" image:[UIImage systemImageNamed:@"gearshape"] selectedImage:[UIImage systemImageNamed:@"gearshape.fill"]]; // Set view controllers self.viewControllers = @[homeNav, vodNav, callNav, settingsNav]; // Customize tab bar appearance self.tabBar.tintColor = [UIColor systemBlueColor]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // 检查登录状态 [self checkLoginStatus]; } #pragma mark - Login Management - (void)checkLoginStatus { // 如果未登录,显示登录页面 if (![AVUserManager sharedManager].isLoggedIn) { [self showLoginViewController]; } } - (void)showLoginViewController { AVLoginViewController *loginVC = [[AVLoginViewController alloc] init]; loginVC.delegate = self; loginVC.modalPresentationStyle = UIModalPresentationFullScreen; // 确保不会重复弹出登录页面 if (self.presentedViewController == nil) { [self presentViewController:loginVC animated:YES completion:nil]; } } #pragma mark - AVLoginViewControllerDelegate - (void)loginViewControllerDidLogin:(AVLoginViewController *)controller { // 登录成功,关闭登录页面 [controller dismissViewControllerAnimated:YES completion:^{ NSLog(@"✅ 登录成功,已进入应用"); }]; } #pragma mark - Orientation Support (将方向决策交给顶层 ViewController) - (BOOL)shouldAutorotate { // 返回当前显示的 NavigationController 的顶层 VC 的设置 UINavigationController *nav = (UINavigationController *)self.selectedViewController; if ([nav isKindOfClass:[UINavigationController class]]) { return [nav.topViewController shouldAutorotate]; } return [self.selectedViewController shouldAutorotate]; } - (UIInterfaceOrientationMask)supportedInterfaceOrientations { // 返回当前显示的 NavigationController 的顶层 VC 的设置 UINavigationController *nav = (UINavigationController *)self.selectedViewController; if ([nav isKindOfClass:[UINavigationController class]]) { return [nav.topViewController supportedInterfaceOrientations]; } return [self.selectedViewController supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { // 返回当前显示的 NavigationController 的顶层 VC 的设置 UINavigationController *nav = (UINavigationController *)self.selectedViewController; if ([nav isKindOfClass:[UINavigationController class]]) { return [nav.topViewController preferredInterfaceOrientationForPresentation]; } return [self.selectedViewController preferredInterfaceOrientationForPresentation]; } @end