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

231 lines
8.5 KiB
Objective-C

//
// TLDiscoverViewController.m
// TLChat
//
// Created by 李伯坤 on 2017/7/6.
// Copyright © 2017年 李伯坤. All rights reserved.
//
#import "TLDiscoverViewController.h"
#import "TLMomentsViewController.h"
#import "TLScanningViewController.h"
#import "TLShakeViewController.h"
#import "TLBottleViewController.h"
#import "TLGameViewController.h"
#import "TLGameViewController.h"
#import "TLMenuItem.h"
typedef NS_ENUM(NSInteger, TLDiscoverSectionTag) {
TLDiscoverSectionTagMoments,
TLDiscoverSectionTagFounction,
TLDiscoverSectionTagStudy,
TLDiscoverSectionTagSocial,
TLDiscoverSectionTagLife,
TLDiscoverSectionTagProgram,
};
typedef NS_ENUM(NSInteger, TLDiscoverCellTag) {
TLDiscoverCellTagMoments, // 好友圈
TLDiscoverCellTagScaner, // 扫一扫
TLDiscoverCellTagShake, // 摇一摇
TLDiscoverCellTagRead, // 看一看
TLDiscoverCellTagSearch, // 搜一搜
TLDiscoverCellTagNearby, // 附近的人
TLDiscoverCellTagBottle, // 漂流瓶
TLDiscoverCellTagShopping, // 购物
TLDiscoverCellTagGame, // 游戏
TLDiscoverCellTagProgram, // 小程序
};
@implementation TLDiscoverViewController
#pragma mark - # Life Cycle
- (id)init
{
if (self = [super init]) {
initTabBarItem(self.tabBarItem, LOCSTR(@"发现"), @"tabbar_discover", @"tabbar_discoverHL");
[self.tabBarItem setBadgeValue:@""];
}
return self;
}
- (void)loadView
{
[super loadView];
[self.navigationItem setTitle:LOCSTR(@"发现")];
[self loadMenus];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
self.momentsVC = nil;
}
#pragma mark - # UI
- (void)loadMenus
{
@weakify(self);
self.clear();
// 好友圈
{
NSInteger sectionTag = TLDiscoverSectionTagMoments;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(15, 0, 0, 0));
TLMenuItem *moments = createMenuItem(@"discover_album", LOCSTR(@"朋友圈"));
[moments setRightIconURL:@"http://i01.pic.sogou.com/23112449ac395e72" withRightIconBadge:YES];
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(moments).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
if (!self.momentsVC) {
self.momentsVC = [[TLMomentsViewController alloc] init];
}
PushVC(self.momentsVC);
});
}
// 功能
{
NSInteger sectionTag = TLDiscoverSectionTagFounction;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
// 扫一扫
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(createMenuItem(@"discover_scaner", LOCSTR(@"扫一扫"))).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLScanningViewController *scannerVC = [[TLScanningViewController alloc] init];
PushVC(scannerVC);
});
// 摇一摇
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(createMenuItem(@"discover_shake", LOCSTR(@"摇一摇"))).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLShakeViewController *shakeVC = [[TLShakeViewController alloc] init];
PushVC(shakeVC);
});
}
// 学习
{
NSInteger sectionTag = TLDiscoverSectionTagStudy;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
// 看一看
TLMenuItem *read = createMenuItem(@"discover_read", LOCSTR(@"看一看"));
[read setBadge:@"2"];
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(read).viewTag(TLDiscoverCellTagRead).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLWebViewController *webVC = [[TLWebViewController alloc] initWithUrl:@"http://www.jianshu.com/u/8dabd0639b26/"];
[webVC setTitle:data.title];
PushVC(webVC);
});
// 搜一搜
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(createMenuItem(@"discover_search", LOCSTR(@"搜一搜"))).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLWebViewController *webVC = [[TLWebViewController alloc] initWithUrl:@"https://www.zhihu.com/people/li-bo-kun-40/activities"];
[webVC setTitle:data.title];
PushVC(webVC);
});
}
// 社交
{
NSInteger sectionTag = TLDiscoverSectionTagSocial;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
// 附近的人
// self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModelcreateMenuItem(@"discover_location", LOCSTR(@"附近的人")).selectedAction(^ (TLMenuItem *data) {
// @strongify(self);
//
// });
// 漂流瓶
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(createMenuItem(@"discover_bottle", LOCSTR(@"漂流瓶"))).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLBottleViewController *bottleVC = [[TLBottleViewController alloc] init];
PushVC(bottleVC);
});
}
// 生活
{
NSInteger sectionTag = TLDiscoverSectionTagLife;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 0, 0));
// 购物
TLMenuItem *shopping = createMenuItem(@"discover_shopping", LOCSTR(@"购物"));
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(shopping).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLWebViewController *webVC = [[TLWebViewController alloc] initWithUrl:@"http://m.zhuanzhuan.com"];
[webVC setTitle:@"转转"];
PushVC(webVC);
});
// 游戏
TLMenuItem *game = createMenuItem(@"discover_game", LOCSTR(@"游戏"));
[game setRightIconURL:@"http://qq1234.org/uploads/allimg/140404/3_140404151205_8.jpg" withRightIconBadge:YES];
[game setSubTitle:@"英雄联盟计算器版"];
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(game).selectedAction(^ (TLMenuItem *data) {
@strongify(self);
TLGameViewController *gameVC = [[TLGameViewController alloc] init];
PushVC(gameVC);
});
}
// 小程序
{
NSInteger sectionTag = TLDiscoverSectionTagProgram;
self.addSection(sectionTag).sectionInsets(UIEdgeInsetsMake(20, 0, 40, 0));
TLMenuItem *program = createMenuItem(@"discover_app", LOCSTR(@"小程序"));
self.addCell(CELL_MENU_ITEM).toSection(sectionTag).withDataModel(program).selectedAction(^ (id data) {
@strongify(self);
TLWebViewController *webVC = [[TLWebViewController alloc] initWithUrl:@"https://github.com/tbl00c"];
PushVC(webVC);
});
}
[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