
- 创建SettingPage视图,包含用户信息管理、头像设置、昵称编辑等功能。 - 实现SettingViewModel,处理设置页面的业务逻辑,包括头像上传、昵称更新等。 - 添加相机和相册选择功能,支持头像更换。 - 更新MainPage和MainViewModel,添加导航逻辑以支持设置页面的访问。 - 完善本地化支持,确保多语言兼容性。 - 新增相关测试建议,确保功能完整性和用户体验。
65 lines
1.5 KiB
Swift
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")
|
|
}
|
|
}
|
|
}
|