SwiftUI NavigationStack 反向移植

UINavigationController 之上实现的适用于 iOS 14 和 15 的 NavigationStack。对于 iOS 16 或更高版本,反向移植仅桥接至现有的 SwiftUI API。

特性

入门

支持通过 Swift Package Manager 安装。使用 https://github.com/lm/navigation-stack-backport 作为依赖 URL。有关如何在 Xcode 中添加依赖关系的更多信息,请参阅 https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app 或者在您的 Package.swift 中添加依赖关系 .package(url: "https://github.com/lm/navigation-stack-backport", from: "1.1.0")

用法示例

用法与 iOS 16 上的 SwiftUI 的 NavigationStack 相同,只需在 NavigationStack 和其他类型前加上 NavigationStackBackport. 前缀,或者从 NavigationStackBackport 包中导入精确的类型。对于 iOS 16 中引入的视图修饰符,请使用 backport. 前缀,例如 .backport.navigationDestination(for: …)

import NavigationStackBackport

struct ContentView: View {
	@State private var navigationPath = NavigationStackBackport.NavigationPath()

	var body: some View {
		NavigationStackBackport.NavigationStack(path: $navigationPath) {
			Button("Push") {
				navigationPath.append("Hello World")
			}
			.backport.navigationDestination(for: String.self) { value in
				Image(systemName: "globe")
					.navigationTitle(value) // use available SwiftUI's modifiers
			}
		}
	}
}

更多示例请参见本仓库中的 TestApp