// // TFDiscoverComicViewController.m // TFReader // // Created by 谢腾飞 on 2020/12/16. // Copyright © 2020 xtfei_2011@126.com. All rights reserved. // #import "TFDiscoverComicViewController.h" #import "TFDiscoverComicViewCell.h" #import "TFDiscoverComicAdvertisementCell.h" #import "TFDiscoverHeaderView.h" #import "TFDiscoverComicModel.h" #import "TFBannerActionManager.h" @interface TFDiscoverComicViewController () @property (nonatomic ,strong) TFDiscoverComicModel *comicDiscoverModel; @property (nonatomic ,strong) TFDiscoverHeaderView *headerView; @property (nonatomic ,assign) BOOL needRefresh; @end @implementation TFDiscoverComicViewController - (void)viewDidLoad { [super viewDidLoad]; [self initialize]; [self createSubviews]; } - (void)initialize { self.needRefresh = YES; [self hiddenNavigationBar:YES]; } - (void)createSubviews { self.mainTableView.delegate = self; self.mainTableView.dataSource = self; [self.view addSubview:self.mainTableView]; [self.mainTableView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0); make.top.mas_equalTo(PUB_NAVBAR_HEIGHT); make.width.mas_equalTo(self.view.mas_width); make.height.mas_equalTo(self.view.mas_height).with.offset(-PUB_TABBAR_HEIGHT - PUB_NAVBAR_HEIGHT); }]; WS(weakSelf) self.headerView = [[TFDiscoverHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, CGFLOAT_MIN)]; self.headerView.bannerrImageClickBlock = ^(TFBannerModel * _Nonnull bannerModel) { if ([TFBannerActionManager getBannerActionWithBannerModel:bannerModel productionType:TFProductionTypeComic]) { [weakSelf.navigationController pushViewController:[TFBannerActionManager getBannerActionWithBannerModel:bannerModel productionType:TFProductionTypeComic] animated:YES]; } }; [self.mainTableView setTableHeaderView:self.headerView]; self.mainTableView.mj_header = [TFRefreshHeader headerWithRefreshingBlock:^{ [weakSelf netRequest]; }]; [self.mainTableView.mj_header beginRefreshing]; self.mainTableView.mj_footer = [TFRefreshFooter footerWithRefreshingBlock:^{ weakSelf.currentPageNumber ++; [weakSelf netRequest]; }]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.comicDiscoverModel.item_list.list.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TFProductionModel *productionModel = [self.comicDiscoverModel.item_list.list objectOrNilAtIndex:indexPath.row]; if (productionModel.ad_type == 0) { TFDiscoverComicViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TFDiscoverComicViewCell"]; if (!cell) { cell = [[TFDiscoverComicViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TFDiscoverComicViewCell"]; } cell.discoverComic = [self.comicDiscoverModel.item_list.list objectOrNilAtIndex:indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } else { static NSString *cellName = @"TFDiscoverComicAdvertisementCell"; TFDiscoverComicAdvertisementCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName]; if (!cell) { cell = [[TFDiscoverComicAdvertisementCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName]; } [cell setAdModel:productionModel refresh:self.needRefresh]; cell.mainTableView = tableView; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return CGFLOAT_MIN; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 10)]; view.backgroundColor = [UIColor clearColor]; return view; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { TFProductionModel *productionModel = [self.comicDiscoverModel.item_list.list objectOrNilAtIndex:indexPath.row]; TFComicDetailViewController *comicDetail = [[TFComicDetailViewController alloc] init]; comicDetail.comic_id = productionModel.production_id; [self.navigationController pushViewController:comicDetail animated:YES]; } - (void)netRequest { WS(weakSelf) NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"channel_id"] = @(TFSystemInfoManager.sexChannel); params[@"page_num"] = @(self.currentPageNumber); [TFNetworkTools POSTQuick:Comic_Discover parameters:params model:TFDiscoverComicModel.class success:^(BOOL isSuccess, TFDiscoverComicModel * _Nullable discoverComicModel, BOOL isCache, TFNetworkRequestModel * _Nonnull requestModel) { [weakSelf.mainTableView endRefreshing]; if (isSuccess) { weakSelf.headerView.banner = discoverComicModel.banner; weakSelf.comicDiscoverModel = discoverComicModel; if (weakSelf.comicDiscoverModel.banner.count > 0) { weakSelf.headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH / 4); } else { weakSelf.headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, CGFLOAT_MIN); } if (discoverComicModel.item_list.current_page >= discoverComicModel.item_list.total_page) { [weakSelf.mainTableView hideRefreshFooter]; } [weakSelf.mainTableView setTableHeaderView:weakSelf.headerView]; } weakSelf.needRefresh = YES; [weakSelf.mainTableView reloadData]; dispatch_async(dispatch_get_main_queue(), ^{ weakSelf.needRefresh = NO; }); } failure:nil]; } @end