Integrate高德 SDK with simulator-safe build flags, add map views for operating area and punch points, refactor main tabs and key feature screens to UIKit with Diffable lists, and document Swift concurrency defaults in AGENTS.md. Co-authored-by: Cursor <cursoragent@cursor.com>
87 lines
2.2 KiB
Swift
87 lines
2.2 KiB
Swift
//
|
||
// AppTab.swift
|
||
// suixinkan
|
||
//
|
||
// Created by Codex on 2026/6/18.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
/// 主 Tab 实体,描述底部导航中的每一个一级入口。
|
||
enum AppTab: String, CaseIterable, Identifiable, Hashable {
|
||
case home
|
||
case orders
|
||
case statistics
|
||
case profile
|
||
|
||
var id: Self { self }
|
||
|
||
var title: String {
|
||
switch self {
|
||
case .home:
|
||
"首页"
|
||
case .orders:
|
||
"订单"
|
||
case .statistics:
|
||
"数据"
|
||
case .profile:
|
||
"我的"
|
||
}
|
||
}
|
||
|
||
/// 选中态 TabBar 图标资源名。
|
||
var selectedImageName: String {
|
||
switch self {
|
||
case .home:
|
||
"TabHomeSelected"
|
||
case .orders:
|
||
"TabOrderSelected"
|
||
case .statistics:
|
||
"TabDataSelected"
|
||
case .profile:
|
||
"TabProfileSelected"
|
||
}
|
||
}
|
||
|
||
/// 未选中态 TabBar 图标资源名。
|
||
var unselectedImageName: String {
|
||
switch self {
|
||
case .home:
|
||
"TabHomeUnselected"
|
||
case .orders:
|
||
"TabOrderUnselected"
|
||
case .statistics:
|
||
"TabDataUnselected"
|
||
case .profile:
|
||
"TabProfileUnselected"
|
||
}
|
||
}
|
||
|
||
/// 构建系统 TabBarItem,供 `UITabBarController` 使用。
|
||
func makeTabBarItem() -> UITabBarItem {
|
||
let unselectedImage = UIImage(named: unselectedImageName)?.withRenderingMode(.alwaysOriginal)
|
||
let selectedImage = UIImage(named: selectedImageName)?.withRenderingMode(.alwaysOriginal)
|
||
let item = UITabBarItem(
|
||
title: title,
|
||
image: unselectedImage,
|
||
selectedImage: selectedImage
|
||
)
|
||
item.accessibilityIdentifier = "main.tab.\(rawValue)"
|
||
return item
|
||
}
|
||
|
||
/// 构建 Tab 根页面 ViewController。
|
||
func makeRootViewController(services: AppServices) -> UIViewController {
|
||
switch self {
|
||
case .home:
|
||
return HomeViewController()
|
||
case .orders:
|
||
return OrdersViewController()
|
||
case .statistics:
|
||
return StatisticsViewController()
|
||
case .profile:
|
||
return ProfileViewController()
|
||
}
|
||
}
|
||
}
|