Files
e-party-iOS/yana/MVVM/ViewModel/MainViewModel.swift
edwinQQQ de4428e8a1 feat: 新增设置页面及相关功能实现
- 创建SettingPage视图,包含用户信息管理、头像设置、昵称编辑等功能。
- 实现SettingViewModel,处理设置页面的业务逻辑,包括头像上传、昵称更新等。
- 添加相机和相册选择功能,支持头像更换。
- 更新MainPage和MainViewModel,添加导航逻辑以支持设置页面的访问。
- 完善本地化支持,确保多语言兼容性。
- 新增相关测试建议,确保功能完整性和用户体验。
2025-08-06 18:51:37 +08:00

65 lines
1.5 KiB
Swift

import SwiftUI
// MARK: - Main ViewModel
@MainActor
class MainViewModel: ObservableObject {
// MARK: - Published Properties
@Published var selectedTab: Tab = .feed
@Published var isLoggedOut: Bool = false
@Published var navigationPath = NavigationPath()
// MARK: - Callbacks
var onLogout: (() -> Void)?
var onAddButtonTapped: (() -> Void)?
// MARK: - Enums
enum Tab: String, CaseIterable {
case feed = "feed"
case me = "me"
var title: String {
switch self {
case .feed:
return "Feed"
case .me:
return "Me"
}
}
var iconName: String {
switch self {
case .feed:
return "list.bullet"
case .me:
return "person.circle"
}
}
}
// MARK: - Public Methods
func onAppear() {
debugInfoSync("🚀 MainView onAppear")
debugInfoSync(" 当前selectedTab: \(selectedTab)")
}
func onTabChanged(_ newTab: Tab) {
selectedTab = newTab
debugInfoSync("🔄 MainView selectedTab changed: \(newTab)")
}
func onLogoutTapped() {
isLoggedOut = true
onLogout?()
}
func onTopRightButtonTapped() {
switch selectedTab {
case .feed:
onAddButtonTapped?()
case .me:
navigationPath.append("setting")
}
}
}