Add CYLTabBarController with a global scan entry, promote MainTabBarController to the window root after login, replace RouterPath-based navigation with AppNavigator, and fix Profile diffable cell reconfiguration crashes. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.3 KiB
Swift
35 lines
1.3 KiB
Swift
//
|
||
// HomeMenuRouting.swift
|
||
// suixinkan
|
||
//
|
||
|
||
import UIKit
|
||
|
||
@MainActor
|
||
/// 首页菜单 UIKit 路由,将权限 URI 解析结果映射为 Tab 切换或 Navigation push。
|
||
enum HomeMenuRouting {
|
||
|
||
/// 打开首页菜单项对应的目标。
|
||
static func openMenu(_ item: HomeMenuItem, from viewController: UIViewController) {
|
||
openRoute(HomeMenuRouter.resolve(uri: item.uri, title: item.title), from: viewController)
|
||
}
|
||
|
||
/// 打开首页 URI 解析结果。
|
||
static func openRoute(_ route: HomeMenuResolvedRoute, from viewController: UIViewController) {
|
||
let services = AppServices.shared
|
||
switch route {
|
||
case .tab(let tab):
|
||
services.appNavigator.selectTab(tab)
|
||
case .orders(let entry):
|
||
services.appNavigator.openOrdersEntry(entry)
|
||
case .destination(let homeRoute):
|
||
services.appNavigator.push(.home(homeRoute), from: viewController)
|
||
case .unsupported(let uri, let title, _):
|
||
services.appNavigator.push(.home(.modulePlaceholder(uri: uri, title: title)), from: viewController)
|
||
case .placeholder(let uri, let title):
|
||
HomeRouteDiagnostics.recordUnknown(uri: uri, title: title)
|
||
services.appNavigator.push(.home(.modulePlaceholder(uri: uri, title: title)), from: viewController)
|
||
}
|
||
}
|
||
}
|