从 iOS 17 Observation 迁移至 iOS 16 兼容的 Combine 架构
将最低部署版本降至 iOS 16,以 ObservableObject 替换 @Observable,新增导航与 UI 兼容层,并补充登录冒烟 UI 测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
31
suixinkan/App/Navigation/NavigationCompatibility.swift
Normal file
31
suixinkan/App/Navigation/NavigationCompatibility.swift
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// NavigationCompatibility.swift
|
||||
// suixinkan
|
||||
//
|
||||
// Created by Codex on 2026/6/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
extension View {
|
||||
/// iOS 16 compatible replacement for iOS 17's navigationDestination(item:).
|
||||
func appNavigationDestination<Item, Destination: View>(
|
||||
item: Binding<Item?>,
|
||||
@ViewBuilder destination: @escaping (Item) -> Destination
|
||||
) -> some View {
|
||||
navigationDestination(
|
||||
isPresented: Binding(
|
||||
get: { item.wrappedValue != nil },
|
||||
set: { isPresented in
|
||||
if !isPresented {
|
||||
item.wrappedValue = nil
|
||||
}
|
||||
}
|
||||
)
|
||||
) {
|
||||
if let value = item.wrappedValue {
|
||||
destination(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user