Files
yinmeng-ios/xplan-ios/Main/Tabbar/TabbarViewController.m

156 lines
5.3 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ViewController.m
// xplan-ios
//
// Created by zu on 2021/8/31.
//
#import <UIKit/UIKit.h>
///Third
#import <flutter_boost/FlutterBoost.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
#import "UIImage+Utils.h"
#import "XCHUDTool.h"
///VC
#import "TabbarViewController.h"
#import "BaseViewController.h"
#import "LoginViewController.h"
#import "BaseNavigationController.h"
#import "LoginBindPhoneViewController.h"
#import "LoginFullInfoViewController.h"
#import "XplanFBFlutterViewContainer.h"
///Present
#import "MainPresenter.h"
#import "MainProtocol.h"
@interface TabbarViewController () <BaseMvpProtocol, MainProtocol>
@property (nonatomic, strong) MainPresenter *presenter;
@end
@implementation TabbarViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self configTheme];
[self initTabs];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
[self.presenter autoLogin];
}
- (MainPresenter *)presenter {
if (_presenter == nil) {
_presenter = [[MainPresenter alloc] init];
[_presenter attatchView:self];
}
return _presenter;
}
/// 换取ticket后获取用户信息
/// 重新获取ticket后才会回调该方法详见MainPresenter.autoLogin()
- (void)autoLoginSuccess {
[self.presenter getUserInfo];
}
/// 获取用户信息后检查1、是否绑定手机号2、是否需要完善用户信息。
/// 该逻辑仅在刷新ticket后执行一次。
/// 当前服务端接口是有未完善信息的全局拦截的在BaseMvpPresenter里会触发1415去完善用户信息。
- (void)getUserInfoSuccess:(UserInfoModel *)userInfo {
if (!userInfo.isBindPhone) {
// 绑定手机号
[self bindPhone];
return;
}
if (userInfo.nick == nil || userInfo.avatar == nil) {
[self completeUserInfo];
return;
}
self.selectedIndex = 0;
}
- (void)tokenInvalid {
LoginViewController *lvc = [[LoginViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:lvc];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
}
- (void)completeUserInfo {
LoginFullInfoViewController * bindPhoneVC = [[LoginFullInfoViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
}
#pragma mark - 绑定手机号
- (void)bindPhone {
LoginBindPhoneViewController * bindPhoneVC = [[LoginBindPhoneViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
}
- (void)configTheme {
[[UITabBar appearance] setBackgroundImage:[UIImage imageWithColor:[ThemeColor appCellBackgroundColor] size:CGSizeMake(KScreenWidth, kTabBarHeight)]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc]init]];
if (@available(iOS 10.0, *)) {
[[UITabBar appearance] setUnselectedItemTintColor:[ThemeColor tabbarNormalColor]];
}
}
- (void)initTabs {
NSArray *normalImageNames = @[@"tab_game_normal", @"tab_mine_normal"];
NSArray *selectImageNames = @[@"tab_game_selected", @"tab_mine_selected"];
NSArray *tabLabel = @[@"赛事", @"我的"];
XplanFBFlutterViewContainer *fvcGame = XplanFBFlutterViewContainer.new;
#ifdef DEBUG
[fvcGame setName:@"debug" uniqueId:nil params:nil];
#else
[fvc setName:@"/" uniqueId:nil params:nil];
#endif
[self addChildViewController:[self createTabBarItem:fvcGame title:tabLabel[0] image:normalImageNames[0] selectedImage:selectImageNames[0]]];
BaseViewController *bvcMe = [[BaseViewController alloc] init];
[self addChildViewController:[self createTabBarItem:bvcMe title:tabLabel[1] image:normalImageNames[1] selectedImage:selectImageNames[1]]];
self.selectedIndex = 1;
}
- (BaseNavigationController *)createTabBarItem:(UIViewController *)itemVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage{
itemVc.title = title;
itemVc.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
itemVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[itemVc.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[ThemeColor appMainColor]} forState:UIControlStateSelected];
[itemVc.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[ThemeColor tabbarNormalColor]} forState:UIControlStateNormal];
BaseNavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:itemVc];
return nav;
}
- (void)showSuccessToast:(NSString *)msg {
[XCHUDTool showSuccessWithMessage:msg];
}
- (void)showErrorToast:(NSString *)msg {
[XCHUDTool showErrorWithMessage:msg];
}
- (void)showLoading {
[XCHUDTool showLoading];
}
- (void)hideHUD {
[XCHUDTool hideHUD];
}
@end