817 lines
31 KiB
Objective-C
817 lines
31 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.leading.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 (_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];
|
|
}
|
|
}
|
|
|
|
#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)myEventListFailure:(NSString *)msg {
|
|
[self.myEventTableView.mj_header endRefreshing];
|
|
if (self.myEventTableViewPage == 1) {
|
|
[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
|