Files
peko-ios/YuMi/Modules/YMNewHome/View/EventCenterViewController.m

823 lines
32 KiB
Objective-C

//
// EventCenterViewController.m
// YuMi
//
// Created by P on 2025/4/29.
//
#import "EventCenterViewController.h"
#import "EventCenterPresenter.h"
#import "EventCenterEventCell.h"
#import "EventCenterOfficialCell.h"
#import "EventCenterEmptyCell.h"
#import "CreateEventViewControllerV2.h"
#import "HomeBannerInfoModel.h"
#import "CreateEventPresenter.h"
#import "EventCenterEventCell.h"
#import "XPWebViewController.h"
#import "XPRoomViewController.h"
#import "MyEventsViewController.h"
#import "XPRoomViewController.h"
static NSString *kOfficialEmptyID = @"official empty";
static NSString *kSquareEmptyID = @"square empty";
static NSString *kMyEmptyID = @"my empty";
static UIEdgeInsets kEventTableViewContentInset(void) {
return UIEdgeInsetsMake(0, 0, 100 + kSafeAreaBottomHeight, 0);
}
static UIEdgeInsets kOfficialTableViewContentInset(void) {
return UIEdgeInsetsMake(0, 0, 100 + kSafeAreaBottomHeight, 0);
}
@interface EventCenterViewController () <UIPageViewControllerDataSource, UIPageViewControllerDelegate, UITableViewDelegate, UITableViewDataSource, CreateEventPresenterProcotol>
@property (nonatomic, strong) NSMutableArray <HomeBannerInfoModel *>*officialDatasource;
@property (nonatomic, strong) NSMutableArray <EventItemModel *>*eventSquareDatasource;
@property (nonatomic, strong) NSMutableArray *myCreateEventDatasource;
@property (nonatomic, strong) NSMutableArray *mySubEventDatasource;
@property (nonatomic, strong) UITableView *officialTableView;
@property (nonatomic, strong) UITableView *myEventTableView;
@property (nonatomic, strong) UITableView *eventSquareTableView;
@property (nonatomic, assign) NSInteger myEventTableViewPage;
@property (nonatomic, assign) NSInteger eventSquareTableViewPage;
@property (nonatomic, strong) UIView *tabView;
@property (nonatomic, strong) UIImageView *indicatorImageView;
@property (nonatomic, strong) NSArray<UIButton *> *tabButtons;
@property (nonatomic, strong) UIPageViewController *pageViewController;
@property (nonatomic, strong) NSArray<UIViewController *> *contentViewControllers;
@property (nonatomic, assign) NSInteger currentIndex;
@property (nonatomic, strong) UIButton *createButton;
- (void)switchToIndex:(NSInteger)index animated:(BOOL)animated;
@end
@implementation EventCenterViewController
- (CreateEventPresenter *)createPresenter {
return [[CreateEventPresenter alloc] init];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.title = YMLocalizedString(@"20.20.59_text_1");
[self setupTabView];
[self setupPageViewController];
[self setupBottomButton];
// 设置初始状态下 createButton 的显示状态
self.createButton.hidden = YES;
[self.presenter loadOfficialEvents];
}
#pragma mark - Setup UI
- (void)setupTabView {
self.tabView = [[UIView alloc] init];
[self.view addSubview:self.tabView];
[self.tabView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop);
make.left.right.equalTo(self.view);
make.height.mas_equalTo(44);
}];
NSArray *titles = @[YMLocalizedString(@"20.20.59_text_2"),
YMLocalizedString(@"20.20.59_text_3"),
YMLocalizedString(@"20.20.59_text_4")];
NSMutableArray *buttons = [NSMutableArray array];
CGFloat buttonWidth = UIScreen.mainScreen.bounds.size.width / titles.count;
for (NSInteger i = 0; i < titles.count; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:titles[i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
button.tag = i;
[button addTarget:self action:@selector(tabButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.tabView addSubview:button];
[button mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.tabView);
make.left.equalTo(self.tabView).offset(i * buttonWidth);
make.width.mas_equalTo(buttonWidth);
}];
[buttons addObject:button];
}
self.tabButtons = buttons;
// 添加底部指示器
self.indicatorImageView = [[UIImageView alloc] initWithImage:kImage(@"yellow_indicator")];
[self.tabView addSubview:self.indicatorImageView];
[self.indicatorImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.tabView);
make.width.mas_equalTo(21);
make.height.mas_equalTo(6);
make.centerX.equalTo(buttons.firstObject);
}];
// 设置默认选中状态
self.currentIndex = 0;
((UIButton *)buttons.firstObject).selected = YES;
}
- (void)setupPageViewController {
self.myEventTableViewPage = 1;
self.eventSquareTableViewPage = 1;
// 创建内容页面控制器
NSMutableArray *viewControllers = [NSMutableArray array];
// 使用懒加载的TableView
UIViewController *officialVC = [[UIViewController alloc] init];
officialVC.view = self.officialTableView;
[viewControllers addObject:officialVC];
UIViewController *eventSquareVC = [[UIViewController alloc] init];
eventSquareVC.view = self.eventSquareTableView;
[viewControllers addObject:eventSquareVC];
UIViewController *myEventVC = [[UIViewController alloc] init];
myEventVC.view = self.myEventTableView;
[viewControllers addObject:myEventVC];
self.contentViewControllers = viewControllers;
// 配置PageViewController
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
[self.pageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.tabView.mas_bottom);
make.left.right.bottom.equalTo(self.view);
}];
// 设置初始页面
[self.pageViewController setViewControllers:@[viewControllers.firstObject]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
}
- (void)setupBottomButton {
[self.view addSubview:self.createButton];
[self.createButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.view);
make.bottom.mas_equalTo(self.view).offset(-48);
make.size.mas_equalTo(CGSizeMake(195, 40));
}];
}
#pragma mark - Setup Data
- (void)setOfficialDatasource:(NSMutableArray<HomeBannerInfoModel *> *)officialDatasource {
_officialDatasource = officialDatasource;
//#if DEBUG
//#else
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"activityShow == %@", @(1)];
// [_officialDatasource filterUsingPredicate:predicate];
//#endif
// 处理空数据状态
if (_officialDatasource.count == 0) {
self.officialTableView.mj_header.hidden = NO;
self.officialTableView.mj_footer.hidden = YES;
} else {
self.officialTableView.mj_header.hidden = NO;
self.officialTableView.mj_footer.hidden = NO;
}
[self.officialTableView reloadData];
}
#pragma mark - Actions
- (void)tabButtonClicked:(UIButton *)sender {
[self switchToIndex:sender.tag animated:YES];
}
- (void)switchToIndex:(NSInteger)index animated:(BOOL)animated {
if (index == self.currentIndex) return;
// 更新按钮状态
self.tabButtons[self.currentIndex].selected = NO;
self.tabButtons[index].selected = YES;
// 更新指示器位置
[self.indicatorImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.tabView);
make.width.mas_equalTo(21);
make.height.mas_equalTo(6);
make.centerX.equalTo(self.tabButtons[index]);
}];
if (animated) {
[UIView animateWithDuration:0.05 animations:^{
[self.view layoutIfNeeded];
}];
}
// 切换页面
UIPageViewControllerNavigationDirection direction = index > self.currentIndex ? UIPageViewControllerNavigationDirectionForward : UIPageViewControllerNavigationDirectionReverse;
[self.pageViewController setViewControllers:@[self.contentViewControllers[index]]
direction:direction
animated:animated
completion:nil];
self.currentIndex = index;
// 根据当前选中的tab控制createButton的显示状态
self.createButton.hidden = (index == 0);
// 加载数据逻辑
switch (index) {
case 0:
if (self.officialDatasource.count == 0) {
[self.presenter loadOfficialEvents];
}
break;
case 1:
if (self.eventSquareDatasource.count == 0) {
[self.presenter loadEventSquare:self.eventSquareTableViewPage];
}
break;
case 2:
if (self.myCreateEventDatasource.count == 0 && self.mySubEventDatasource.count == 0) {
[self.presenter loadMyEvents];
}
break;
default:
break;
}
}
- (void)didTapCreateButton {
CreateEventViewControllerV2 *createEventVC = [[CreateEventViewControllerV2 alloc] init];
[self.navigationController pushViewController:createEventVC animated:YES];
@kWeakify(self);
[createEventVC setCreateSuccess:^{
@kStrongify(self);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.eventSquareTableView.mj_header beginRefreshing];
[self.myEventTableView.mj_header beginRefreshing];
});
}];
}
- (void)didTapMyCreateEventSeactionTitle {
MyEventsViewController *vc = [[MyEventsViewController alloc] init];
[self.navigationController pushViewController:vc
animated:YES];
}
- (void)handleCellStatusButtonDidTap:(EventItemModel *)model action:(EventCellActions)action {
switch (action) {
case EventCellAction_participate:
[XPRoomViewController openRoom:@(model.roomUid).stringValue
viewController:self];
break;
case EventCellAction_sub:
[self.presenter subEvent:model.subStatus ? NO : YES
eventId:model.id];
break;
case EventCellAction_unsub:
[self.presenter subEvent:model.subStatus ? NO : YES
eventId:model.id];
break;
case EventCellAction_delete:
[self.presenter deleteEvent:model.id];
default:
break;
}
}
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == self.myEventTableView) {
return 2;
}
return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if (tableView == self.myEventTableView) {
return 60;
}
return 0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if (tableView == self.myEventTableView) {
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 60)];
v.backgroundColor = [UIColor whiteColor];
UILabel *title = [UILabel labelInitWithText:section == 0 ? YMLocalizedString(@"20.20.59_text_4") : YMLocalizedString(@"20.20.59_text_22")
font:kFontSemibold(18)
textColor:UIColorFromRGB(0x313131)];
[v addSubview:title];
[title mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(v);
make.leading.mas_equalTo(15);
}];
if (section == 0) {
UIImageView *arrow = [[UIImageView alloc] initWithImage:[kImage(@"event_arrow_black") ms_SetImageForRTL]];
arrow.userInteractionEnabled = YES;
[v addSubview:arrow];
[arrow mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(v);
make.trailing.mas_equalTo(-15);
make.size.mas_equalTo(CGSizeMake(22, 22));
}];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didTapMyCreateEventSeactionTitle)];
[arrow addGestureRecognizer:tap];
}
return v;
}
return nil;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.officialTableView) {
return self.officialDatasource.count > 0 ? self.officialDatasource.count : 1;
} else if (tableView == self.eventSquareTableView) {
return self.eventSquareDatasource.count > 0 ? self.eventSquareDatasource.count : 1;
} else if (tableView == self.myEventTableView) {
switch (section) {
case 0:
return self.myCreateEventDatasource.count > 0 ? self.myCreateEventDatasource.count : 1;
break;
case 1:
return self.mySubEventDatasource.count > 0 ? self.mySubEventDatasource.count : 1;
break;
default:
return 0;
break;
}
}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
@kWeakify(self);
if (tableView == self.officialTableView) {
if (self.officialDatasource.count == 0) {
EventCenterEmptyCell *cell = [EventCenterEmptyCell cellFor:tableView customID:kOfficialEmptyID atIndexPath:indexPath];
// 设置空状态的提示文本
// [cell updateWithTitle:YMLocalizedString(@"20.20.59_text_37")
// subTitle:msg];
return cell;
}
EventCenterOfficialCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([EventCenterOfficialCell class])];
if (!cell) {
cell = [[EventCenterOfficialCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([EventCenterOfficialCell class])];
}
cell.cellModel = [self.officialDatasource xpSafeObjectAtIndex:indexPath.row];
return cell;
} else if (tableView == self.eventSquareTableView) {
if (self.eventSquareDatasource.count == 0) {
return [EventCenterEmptyCell cellFor:tableView customID:kSquareEmptyID atIndexPath:indexPath];
}
EventCenterEventCell *cell = [EventCenterEventCell cellFor:tableView atIndexPath:indexPath];
EventItemModel *model = [self.eventSquareDatasource xpSafeObjectAtIndex:indexPath.row];
[cell updateCell:model];
[cell setStatusButtonDidTap:^(EventItemModel * _Nonnull model, EventCellActions action) {
@kStrongify(self);
[self handleCellStatusButtonDidTap:model action:action];
}];
return cell;
} else if (tableView == self.myEventTableView) {
switch (indexPath.section) {
case 0: {
if (self.myCreateEventDatasource.count == 0) {
return [EventCenterEmptyCell cellFor:tableView customID:kMyEmptyID atIndexPath:indexPath];
}
EventCenterEventCell *cell = [EventCenterEventCell cellFor:tableView atIndexPath:indexPath];
EventItemModel *model = [self.myCreateEventDatasource xpSafeObjectAtIndex:indexPath.row];
[cell updateCell:model];
[cell setStatusButtonDidTap:^(EventItemModel * _Nonnull model, EventCellActions action) {
@kStrongify(self);
[self handleCellStatusButtonDidTap:model action:action];
}];
return cell;
}
break;
case 1: {
if (self.mySubEventDatasource.count == 0) {
return [EventCenterEmptyCell cellFor:tableView customID:kMyEmptyID atIndexPath:indexPath];
}
EventCenterEventCell *cell = [EventCenterEventCell cellFor:tableView atIndexPath:indexPath];
EventItemModel *model = [self.mySubEventDatasource xpSafeObjectAtIndex:indexPath.row];
[cell updateCell:model];
[cell setStatusButtonDidTap:^(EventItemModel * _Nonnull model, EventCellActions action) {
@kStrongify(self);
[self handleCellStatusButtonDidTap:model action:action];
}];
return cell;
}
break;
default:
break;
}
}
return [UITableViewCell new];
}
#pragma mark - UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.officialTableView) {
return self.officialDatasource.count == 0 ? [EventCenterEmptyCell cellHeight] : 120;
}
if (tableView == self.eventSquareTableView) {
return self.eventSquareDatasource.count == 0 ? [EventCenterEmptyCell cellHeight] : 140;
}
if (tableView == self.myEventTableView) {
switch (indexPath.section) {
case 0:
return self.myCreateEventDatasource.count == 0 ? [EventCenterEmptyCell cellHeight] : 140;
break;
case 1:
return self.mySubEventDatasource.count == 0 ? [EventCenterEmptyCell cellHeight] : 140;
break;
default:
return 0;
break;
}
}
return 0;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// 处理cell点击事件
if (tableView == self.officialTableView) {
HomeBannerInfoModel *model = [self.officialDatasource xpSafeObjectAtIndex:indexPath.row];
if (model) {
switch (model.skipType) {
case HomeBannerInfoSkipType_Room:
{
if (model.skipUri.length > 0) {
[XPRoomViewController openRoom:model.skipUri viewController:self];
}
}
break;
case HomeBannerInfoSkipType_Web:
case HomeBannerInfoSkipType_Web_CP:
case HomeBannerInfoSkipType_Web_Custom:
case HomeBannerInfoSkipType_Web_WeekStar:
{
XPWebViewController *vc = [[XPWebViewController alloc]initWithRoomUID:nil];
vc.url = model.skipUri;
[self.navigationController pushViewController:vc animated:YES];
}
break;
case HomeBannerInfoSkipType_APP:
case HomeBannerInfoSkipType_None:
default:
break;
}
}
} else if (tableView == self.eventSquareTableView) {
EventItemModel *model = [self.eventSquareDatasource xpSafeObjectAtIndex:indexPath.row];
if (model) {
[self toEventDetail:model.id];
}
} else if (tableView == self.myEventTableView) {
EventItemModel *model;
switch (indexPath.section) {
case 0: {
model = [self.myCreateEventDatasource xpSafeObjectAtIndex:indexPath.row];
}
break;
case 1: {
model = [self.mySubEventDatasource xpSafeObjectAtIndex:indexPath.row];\
}
break;
default:
break;
}
if (model) {
[self toEventDetail:model.id];
}
}
}
- (void)toEventDetail:(NSInteger)eventId {
XPWebViewController * webVC = [[XPWebViewController alloc] initWithRoomUID:nil];
webVC.url = [NSString stringWithFormat:@"%@%@",
URLWithType(kEventDetailPath),
@(eventId)];
[self.navigationController pushViewController:webVC animated:YES];
}
#pragma mark - UIPageViewControllerDataSource
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSInteger index = [self.contentViewControllers indexOfObject:viewController];
if (index == 0 || index == NSNotFound) return nil;
return self.contentViewControllers[index - 1];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger index = [self.contentViewControllers indexOfObject:viewController];
if (index == self.contentViewControllers.count - 1 || index == NSNotFound) return nil;
return self.contentViewControllers[index + 1];
}
#pragma mark - UIPageViewControllerDelegate
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed {
if (!completed) return;
NSInteger index = [self.contentViewControllers indexOfObject:pageViewController.viewControllers.firstObject];
if (index != NSNotFound) {
[self switchToIndex:index animated:YES];
// 首次切换到活动广场,加载数据
if (index == 1 && self.eventSquareDatasource.count == 0) {
[self.presenter loadEventSquare:self.eventSquareTableViewPage];
} else if (index == 2 && self.myCreateEventDatasource == 0 && self.mySubEventDatasource == 0) {
[self.presenter loadMyEvents];
}
}
}
#pragma mark - CreateEventPresenterProcotol
- (void)officialEventListSuccess:(NSArray <HomeBannerInfoModel *> *)listModels {
[self setOfficialDatasource:listModels.mutableCopy];
[self.officialTableView.mj_header endRefreshing];
}
- (void)officialEventListFailure:(NSString *)msg {
[self.officialTableView.mj_header endRefreshing];
// 清空数据源并刷新表格,触发显示空状态
[self setOfficialDatasource:[NSMutableArray array]];
}
- (void)eventSquareListSuccess:(NSArray <EventItemModel *>*)list {
if (self.eventSquareTableViewPage == 1) {
[self.eventSquareDatasource removeAllObjects];
}
if (list.count > 0) {
[self.eventSquareDatasource addObjectsFromArray:list];
self.eventSquareTableViewPage++;
self.eventSquareTableView.mj_footer.hidden = NO;
} else {
if (self.eventSquareTableViewPage == 1) {
self.eventSquareTableView.mj_footer.hidden = YES;
} else {
// 没有更多数据了
[self.eventSquareTableView.mj_footer endRefreshingWithNoMoreData];
}
}
[self.eventSquareTableView reloadData];
[self.eventSquareTableView.mj_header endRefreshing];
if (list.count < 20) {
[self.eventSquareTableView.mj_footer endRefreshingWithNoMoreData];
} else {
[self.eventSquareTableView.mj_footer endRefreshing];
}
}
- (void)eventSquareListFailure:(NSString *)errorMsg {
[self.eventSquareTableView.mj_header endRefreshing];
[self.eventSquareTableView.mj_footer setHidden:YES];
}
- (void)myCreateEventListSuccess:(NSArray <EventItemModel *> *)list {
[self.myEventTableView.mj_header endRefreshing];
self.myCreateEventDatasource = list.mutableCopy;
[self.myEventTableView reloadData];
}
- (void)myCreateEventListFailure:(NSString *)msg {
[self.myEventTableView.mj_header endRefreshing];
[self.myEventTableView.mj_footer setHidden:YES];
}
- (void)mySubEventListSuccess:(NSArray <EventItemModel *> *)list {
[self.myEventTableView.mj_header endRefreshing];
if (self.myEventTableViewPage == 1) {
self.mySubEventDatasource = list.mutableCopy;
} else {
[self.mySubEventDatasource addObjectsFromArray:list];
}
[self.myEventTableView reloadData];
if (list.count < 20) {
[self.myEventTableView.mj_footer endRefreshingWithNoMoreData];
} else {
[self.myEventTableView.mj_footer endRefreshing];
}
}
- (void)mySubEventListFailure:(NSString *)msg {
[self.myEventTableView.mj_header endRefreshing];
[self.myEventTableView.mj_footer setHidden:YES];
}
- (void)eventSubActionSuccess:(BOOL)isSub eventId:(NSInteger)eventId {
NSInteger count = 0;
if (isSub) {
count += 1;
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"20.20.59_text_35")];
} else {
count -= 1;
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"20.20.59_text_36")];
}
switch (self.currentIndex) {
case 1:
for (EventItemModel *m in self.eventSquareDatasource) {
if (m.id == eventId) {
m.subStatus = isSub;
m.subNum += count;
break;
}
}
[self.eventSquareTableView reloadData];
[self.myEventTableView.mj_header beginRefreshing];
break;
case 2:
for (EventItemModel *m in self.mySubEventDatasource) {
if (m.id == eventId) {
m.subStatus = isSub;
m.subNum += count;
break;
}
}
for (EventItemModel *m in self.myCreateEventDatasource) {
if (m.id == eventId) {
m.subStatus = isSub;
m.subNum += count;
break;
}
}
[self.myEventTableView reloadData];
[self.eventSquareTableView.mj_header beginRefreshing];
break;
default:
break;
}
}
- (void)eventSubActionFailure:(NSString *)msg {
}
- (void)deleteEventSuccess:(NSInteger)eventId {
for (EventItemModel *m in self.mySubEventDatasource) {
if (m.id == eventId) {
[self.mySubEventDatasource removeObject:m];
break;
}
}
for (EventItemModel *m in self.myCreateEventDatasource) {
if (m.id == eventId) {
[self.myCreateEventDatasource removeObject:m];
break;
}
}
[self.myEventTableView reloadData];
}
- (void)deleteEventFailure:(NSString *)msg {
}
#pragma mark - Lazy Loading
- (UITableView *)officialTableView {
if (!_officialTableView) {
_officialTableView = [[UITableView alloc] init];
_officialTableView.backgroundColor = [UIColor whiteColor];
_officialTableView.delegate = self;
_officialTableView.dataSource = self;
_officialTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
if (@available(iOS 11.0, *)) {
_officialTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
[_officialTableView registerClass:[EventCenterOfficialCell class] forCellReuseIdentifier:NSStringFromClass([EventCenterOfficialCell class])];
_officialTableView.contentInset = kOfficialTableViewContentInset();
_officialTableView.scrollIndicatorInsets = kOfficialTableViewContentInset();
[EventCenterEmptyCell registerTo:_officialTableView withCustomID:kOfficialEmptyID];
// 添加下拉刷新
__weak typeof(self) weakSelf = self;
_officialTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
[weakSelf.presenter loadOfficialEvents];
}];
}
return _officialTableView;
}
- (UITableView *)eventSquareTableView {
if (!_eventSquareTableView) {
_eventSquareTableView = [[UITableView alloc] init];
_eventSquareTableView.backgroundColor = [UIColor whiteColor];
_eventSquareTableView.delegate = self;
_eventSquareTableView.dataSource = self;
_eventSquareTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
if (@available(iOS 11.0, *)) {
_eventSquareTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
[EventCenterEmptyCell registerTo:_eventSquareTableView withCustomID:kSquareEmptyID];
[EventCenterEventCell registerTo:_eventSquareTableView];
__weak typeof(self) weakSelf = self;
_eventSquareTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 下拉刷新,重置页码
weakSelf.eventSquareTableViewPage = 1;
[(CreateEventPresenter *)weakSelf.presenter loadEventSquare:weakSelf.eventSquareTableViewPage];
}];
_eventSquareTableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 上拉加载更多
[(CreateEventPresenter *)weakSelf.presenter loadEventSquare:weakSelf.eventSquareTableViewPage];
}];
_eventSquareTableView.contentInset = kEventTableViewContentInset();
_eventSquareTableView.scrollIndicatorInsets = kEventTableViewContentInset();
}
return _eventSquareTableView;
}
- (UITableView *)myEventTableView {
if (!_myEventTableView) {
_myEventTableView = [[UITableView alloc] init];
_myEventTableView.backgroundColor = [UIColor whiteColor];
_myEventTableView.delegate = self;
_myEventTableView.dataSource = self;
_myEventTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
if (@available(iOS 11.0, *)) {
_myEventTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
[EventCenterEmptyCell registerTo:_myEventTableView withCustomID:kMyEmptyID];
[EventCenterEventCell registerTo:_myEventTableView];
__weak typeof(self) weakSelf = self;
_myEventTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 下拉刷新
weakSelf.myEventTableViewPage = 1;
[weakSelf.presenter loadMyEvents];
}];
_myEventTableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 上拉加载更多
weakSelf.myEventTableViewPage += 1;
[weakSelf.presenter loadMySubEvents:weakSelf.myEventTableViewPage];
}];
_myEventTableView.contentInset = kEventTableViewContentInset();
_myEventTableView.scrollIndicatorInsets = kEventTableViewContentInset();
}
return _myEventTableView;
}
- (UIButton *)createButton {
if (!_createButton) {
_createButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_createButton setTitle:YMLocalizedString(@"20.20.59_text_8") forState:UIControlStateNormal];
[_createButton addGradientBackgroundWithColors:@[
UIColorFromRGB(0xe29030),
UIColorFromRGB(0xfcc074)
] startPoint:CGPointMake(0, 0.5) endPoint:CGPointMake(1, 0.5) cornerRadius:20];
[_createButton setCornerRadius:20];
[_createButton addTarget:self action:@selector(didTapCreateButton) forControlEvents:UIControlEventTouchUpInside];
}
return _createButton;
}
- (NSMutableArray <EventItemModel *>*)eventSquareDatasource {
if (!_eventSquareDatasource) {
_eventSquareDatasource = [NSMutableArray array];
}
return _eventSquareDatasource;
}
@end