// // LiveViewControllers.swift // suixinkan // // Created by Codex on 2026/6/26. // import UIKit /// 直播管理页。 final class LiveManagementViewController: ModuleTableViewController { private let viewModel = LiveManagementViewModel() /// 视图加载完成后的 UI 初始化与数据绑定。 override func viewDidLoad() { title = "直播管理" super.viewDidLoad() wireViewModel(viewModel) { } } /// table行Count相关逻辑。 override func tableRowCount() -> Int { viewModel.items.count } /// 配置Cell展示内容。 override func configureCell(_ cell: TitleSubtitleTableViewCell, at indexPath: IndexPath) { let item = viewModel.items[indexPath.row] cell.configure( title: item.title, subtitle: item.statusLabel, detail: String(item.startTime) ) } /// 刷新Content。 override func reloadContent() async { await viewModel.reload(api: services.liveAPI, scenicId: services.currentScenicId) } /// table视图相关逻辑。 override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { guard indexPath.row >= viewModel.items.count - 2 else { return } Task { await viewModel.loadMore(api: services.liveAPI, scenicId: services.currentScenicId) } } } extension LiveManagementViewModel: ViewModelBindable {} /// 直播相册页。 final class LiveAlbumViewController: ModuleTableViewController { private let viewModel = LiveAlbumViewModel() /// 视图加载完成后的 UI 初始化与数据绑定。 override func viewDidLoad() { title = "直播相册" super.viewDidLoad() wireViewModel(viewModel) { } } /// table行Count相关逻辑。 override func tableRowCount() -> Int { viewModel.folders.count } /// 配置Cell展示内容。 override func configureCell(_ cell: TitleSubtitleTableViewCell, at indexPath: IndexPath) { let folder = viewModel.folders[indexPath.row] cell.configure(title: folder.name, subtitle: folder.creator, detail: "\(folder.items.count) 张") } /// 刷新Content。 override func reloadContent() async { await viewModel.reload(api: services.liveAPI, scenicId: services.currentScenicId) } } extension LiveAlbumViewModel: ViewModelBindable {}