
主要变更: 1. 新增 EPImageUploader.swift 和 EPProgressHUD.swift,提供图片批量上传和进度显示功能。 2. 新建 EPMomentAPISwiftHelper.swift,封装动态 API 的 Swift 版本。 3. 更新 EPMomentPublishViewController,集成新上传功能并实现发布成功通知。 4. 创建多个文档,包括实施报告、检查清单和快速使用指南,详细记录功能实现和使用方法。 5. 更新 Bridging Header,确保 Swift 和 Objective-C 代码的互操作性。 此功能旨在提升用户体验,简化动态发布流程,并提供清晰的文档支持。
149 lines
4.9 KiB
Objective-C
149 lines
4.9 KiB
Objective-C
//
|
||
// EPMomentViewController.m
|
||
// YuMi
|
||
//
|
||
// Created by AI on 2025-10-09.
|
||
// Copyright © 2025 YuMi. All rights reserved.
|
||
//
|
||
|
||
#import "EPMomentViewController.h"
|
||
#import <UIKit/UIKit.h>
|
||
#import <Masonry/Masonry.h>
|
||
#import "EPMomentCell.h"
|
||
#import "EPMomentListView.h"
|
||
#import "EPMomentPublishViewController.h"
|
||
#import "YUMIMacroUitls.h"
|
||
|
||
@interface EPMomentViewController ()
|
||
|
||
// MARK: - UI Components
|
||
|
||
/// 列表视图(MVVM:View)
|
||
@property (nonatomic, strong) EPMomentListView *listView;
|
||
|
||
/// 顶部固定文案
|
||
@property (nonatomic, strong) UILabel *topTipLabel;
|
||
|
||
@end
|
||
|
||
@implementation EPMomentViewController
|
||
|
||
// MARK: - Lifecycle
|
||
|
||
- (void)viewDidLoad {
|
||
[super viewDidLoad];
|
||
|
||
self.title = @"动态";
|
||
|
||
[self setupUI];
|
||
[self.listView reloadFirstPage];
|
||
|
||
// 监听发布成功通知
|
||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||
selector:@selector(onMomentPublishSuccess:)
|
||
name:EPMomentPublishSuccessNotification
|
||
object:nil];
|
||
|
||
NSLog(@"[EPMomentViewController] 页面加载完成");
|
||
}
|
||
|
||
- (void)viewWillAppear:(BOOL)animated {
|
||
[super viewWillAppear:animated];
|
||
}
|
||
|
||
// MARK: - Setup UI
|
||
|
||
- (void)setupUI {
|
||
// 先设置纯色背景作为兜底,避免白色闪烁
|
||
self.view.backgroundColor = [UIColor colorWithRed:0.95 green:0.95 blue:0.97 alpha:1.0];
|
||
|
||
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:kImage(@"vc_bg")];
|
||
bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||
bgImageView.clipsToBounds = YES;
|
||
[self.view addSubview:bgImageView];
|
||
[bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.edges.mas_equalTo(self.view);
|
||
}];
|
||
|
||
// 顶部固定文案
|
||
[self.view addSubview:self.topTipLabel];
|
||
[self.topTipLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(8);
|
||
make.leading.trailing.equalTo(self.view).inset(20);
|
||
}];
|
||
|
||
// 列表视图
|
||
[self.view addSubview:self.listView];
|
||
[self.listView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.leading.trailing.bottom.equalTo(self.view);
|
||
make.top.equalTo(self.topTipLabel.mas_bottom).offset(8);
|
||
}];
|
||
|
||
// 右上角发布按钮
|
||
UIBarButtonItem *publishItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(onPublishButtonTapped)];
|
||
self.navigationItem.rightBarButtonItem = publishItem;
|
||
|
||
NSLog(@"[EPMomentViewController] UI 设置完成");
|
||
}
|
||
|
||
// 不再在 VC 内部直接发请求/维护分页
|
||
|
||
// MARK: - Actions
|
||
|
||
- (void)onPublishButtonTapped {
|
||
NSLog(@"[EPMomentViewController] 发布按钮点击");
|
||
EPMomentPublishViewController *vc = [[EPMomentPublishViewController alloc] init];
|
||
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
||
[self.navigationController presentViewController:vc animated:YES completion:nil];
|
||
}
|
||
|
||
- (void)showAlertWithMessage:(NSString *)message {
|
||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
|
||
message:message
|
||
preferredStyle:UIAlertControllerStyleAlert];
|
||
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];
|
||
[self presentViewController:alert animated:YES completion:nil];
|
||
}
|
||
|
||
- (void)onMomentPublishSuccess:(NSNotification *)notification {
|
||
NSLog(@"[EPMomentViewController] 收到发布成功通知,刷新列表");
|
||
[self.listView reloadFirstPage];
|
||
}
|
||
|
||
- (void)dealloc {
|
||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||
}
|
||
|
||
// 列表点击回调由 listView 暴露
|
||
|
||
// MARK: - Lazy Loading
|
||
|
||
// Lazy
|
||
|
||
- (EPMomentListView *)listView {
|
||
if (!_listView) {
|
||
_listView = [[EPMomentListView alloc] initWithFrame:CGRectZero];
|
||
__weak typeof(self) weakSelf = self;
|
||
_listView.onSelectMoment = ^(NSInteger index) {
|
||
__strong typeof(weakSelf) self = weakSelf;
|
||
[self showAlertWithMessage:[NSString stringWithFormat:@"点击了第 %ld 条动态", (long)index]];
|
||
};
|
||
}
|
||
return _listView;
|
||
}
|
||
|
||
- (UILabel *)topTipLabel {
|
||
if (!_topTipLabel) {
|
||
_topTipLabel = [UILabel new];
|
||
_topTipLabel.numberOfLines = 0;
|
||
_topTipLabel.textColor = [UIColor whiteColor];
|
||
_topTipLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular];
|
||
_topTipLabel.text = @"The disease is like a cruel ruler, measuring the true length of my life, but it is also like a lamp, illuminating the present that I have always ignored. Now I feel a strange freedom: since the end is clear, I can take every step with my whole heart.";
|
||
}
|
||
return _topTipLabel;
|
||
}
|
||
|
||
// 无数据源属性
|
||
|
||
@end
|