// // QXUserDynamicView.m // QXLive // // Created by 启星 on 2025/5/21. // #import "QXUserDynamicView.h" #import "QXDynamicListCell.h" #import "QXMineNetwork.h" #import "QXDynamicDetailViewController.h" @interface QXUserDynamicView() @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); @property (nonatomic, assign) NSInteger page; @property (nonatomic, strong) NSMutableArray* dataArray; @end @implementation QXUserDynamicView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.page = 1; _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height) style:UITableViewStylePlain]; self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.tableFooterView = [UIView new]; self.tableView.dataSource = self; self.tableView.delegate = self; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.tableView registerNib:[UINib nibWithNibName:@"QXDynamicListCell" bundle:nil] forCellReuseIdentifier:@"QXDynamicListCell"]; self.tableView.rowHeight = UITableViewAutomaticDimension; // self.tableView.estimatedRowHeight = 152; [self addSubview:self.tableView]; MJWeakSelf _tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ weakSelf.page = 1; [weakSelf getList]; }]; _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{ weakSelf.page++; [weakSelf getList]; }]; } return self; } - (instancetype)initWithOffsetY:(CGFloat)offsety { self = [self initWithFrame:CGRectZero]; self.tableView.contentOffset = CGPointMake(0, offsety); return self; } -(void)setUser_id:(NSString *)user_id{ _user_id = user_id; [self getList]; } -(void)getList{ MJWeakSelf [QXMineNetwork userDynamicWithUserId:self.user_id page:self.page successBlock:^(NSArray * _Nonnull hotos) { if (weakSelf.page == 1) { [weakSelf.dataArray removeAllObjects]; } [weakSelf.dataArray addObjectsFromArray:hotos]; [weakSelf.tableView.mj_header endRefreshing]; if (hotos.count == 0) { weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData; }else{ [weakSelf.tableView.mj_footer endRefreshing]; } [weakSelf.tableView reloadData]; } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) { [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; }]; } - (void)layoutSubviews { [super layoutSubviews]; self.tableView.frame = self.bounds; } #pragma mark - UITableViewDataSource, UITableViewDelegate - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { QXDynamicListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QXDynamicListCell" forIndexPath:indexPath]; cell.selectionStyle = NO; cell.cellType = QXDynamicListCellHomePage; cell.model = self.dataArray[indexPath.row]; // cell.imgs = @[@"user_header_placehoulder",@"user_header_placehoulder"]; // SPTrendListModel *model = self.dataArray[indexPath.row]; // cell.model = model; // WEAK_SELF // cell.onDeleteBlock = ^{ // [weakSelf onDeleteWith:indexPath.row]; // }; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ QXDynamicDetailViewController *vc = [[QXDynamicDetailViewController alloc] init]; vc.model = self.dataArray[indexPath.row]; [self.navigationController pushViewController:vc animated:YES]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (self.scrollCallback != nil) { self.scrollCallback(scrollView); } if (self.listScrollCallback != nil) { self.listScrollCallback(scrollView); } } #pragma mark - JXPagingViewListViewDelegate - (UIScrollView *)listScrollView { return self.tableView; } - (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { self.scrollCallback = callback; } - (UIView *)listView { return self; } -(NSMutableArray *)dataArray{ if (!_dataArray) { _dataArray = [NSMutableArray array]; } return _dataArray; } @end