Files
2026-07-13 12:35:01 +08:00

174 lines
5.6 KiB
Objective-C

//
// TLMineViewController.m
// TLChat
//
// Created by 李伯坤 on 2017/7/6.
// Copyright © 2017年 李伯坤. All rights reserved.
//
#import "TLMineViewController.h"
#import "TLMenuItem.h"
#import "TLUserHelper.h"
#import "TLMineInfoViewController.h"
#import "TLWalletViewController.h"
#import "TLExpressionViewController.h"
#import "TLSettingViewController.h"
typedef NS_ENUM(NSInteger, TLMineSectionTag) {
TLMineSectionTagUserInfo,
TLMineSectionTagWallet,
TLMineSectionTagFounction,
TLMineSectionTagSetting,
};
@implementation TLMineViewController
- (id)init
{
if (self = [super init]) {
initTabBarItem(self.tabBarItem, LOCSTR(@"我"), @"tabbar_me", @"tabbar_meHL");
[self.tabBarItem setBadgeValue:@""];
}
return self;
}
- (void)loadView
{
[super loadView];
[self.navigationItem setTitle:LOCSTR(@"我")];
[self loadMenus];
}
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
if (!CGRectEqualToRect(self.view.bounds, self.collectionView.frame)) {
[self.collectionView setFrame:self.view.bounds];
}
}
#pragma mark - # UI
- (void)loadMenus
{
@weakify(self);
self.clear();
TLUser *user = [TLUserHelper sharedHelper].user;
// 用户信息
{
NSInteger sectionTag = TLMineSectionTagUserInfo;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(15, 0, 0, 0));
self.addCell(@"TLMineHeaderCell").toSection(sectionTag).withDataModel(user).selectedAction(^ (id data) {
@strongify(self);
TLMineInfoViewController *mineInfoVC = [[TLMineInfoViewController alloc] init];
PushVC(mineInfoVC);
});
}
// 钱包
{
NSInteger sectionTag = TLMineSectionTagWallet;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
TLMenuItem *wallet = createMenuItem(@"mine_wallet", LOCSTR(@"钱包"));
[wallet setSubTitle:@"新入账1024元"];
[wallet setBadge:@""];
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(wallet).selectedAction(^ (id data) {
@strongify(self);
TLWalletViewController *walletVC = [[TLWalletViewController alloc] init];
PushVC(walletVC);
});
}
// 功能
{
NSInteger sectionTag = TLMineSectionTagFounction;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
// 收藏
// TLMenuItem *collect = createMenuItem(@"mine_favorites", LOCSTR(@"收藏"));
// self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(collect);
// 相册
TLMenuItem *album = createMenuItem(@"mine_album", LOCSTR(@"相册"));
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(album);
// 卡包
// TLMenuItem *card = createMenuItem(@"mine_card", LOCSTR(@"卡包"));
// self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(card);
// 表情
TLMenuItem *expression = createMenuItem(@"mine_expression", LOCSTR(@"表情"));
[expression setBadge:@"NEW"];
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(expression).selectedAction(^ (id data) {
@strongify(self);
TLExpressionViewController *expressionVC = [[TLExpressionViewController alloc] init];
PushVC(expressionVC);
});
}
// 设置
{
NSInteger sectionTag = TLMineSectionTagSetting;
self.addSection(TLMineSectionTagSetting).sectionInsets(UIEdgeInsetsMake(20, 0, 40, 0));
TLMenuItem *setting = createMenuItem(@"mine_setting", LOCSTR(@"设置"));
self.addCell(CELL_MENU_ITEM).toSection(TLMineSectionTagSetting).withDataModel(setting).selectedAction(^ (id data) {
@strongify(self);
TLSettingViewController *settingVC = [[TLSettingViewController alloc] init];
PushVC(settingVC);
});
}
[self reloadView];
[self resetTabBarBadge];
}
- (void)resetTabBarBadge
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSString *badgeValue;
NSArray *data = [self allDataModelArray];
for (NSArray *section in data) {
for (id item in section) {
if ([item isKindOfClass:[TLMenuItem class]]) {
if ([(TLMenuItem *)item badge] || [(TLMenuItem *)item showRightIconBadge]) {
badgeValue = @"";
break;
}
}
}
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.tabBarItem setBadgeValue:badgeValue];
});
});
}
#pragma mark - # Delegate
- (void)collectionViewDidSelectItem:(TLMenuItem *)dataModel sectionTag:(NSInteger)sectionTag cellTag:(NSInteger)cellTag className:(NSString *)className indexPath:(NSIndexPath *)indexPath
{
if ([dataModel isKindOfClass:[TLMenuItem class]]) {
BOOL needResetTabBarBadge = (dataModel.badge || (dataModel.rightIconURL && dataModel.showRightIconBadge));
BOOL hasDesc = dataModel.subTitle.length > 0 || dataModel.rightIconURL.length > 0;
if (needResetTabBarBadge) {
[dataModel setBadge:nil];
[self resetTabBarBadge];
}
if (hasDesc) {
[dataModel setSubTitle:nil];
[dataModel setRightIconURL:nil];
}
if (needResetTabBarBadge || hasDesc) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self reloadView];
});
}
}
}
@end