SwiftUI Navigation Stack 项目教程
swiftui-navigation-stackAn alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation.项目地址:https://gitcode.com/gh_mirrors/sw/swiftui-navigation-stack
1. 项目的目录结构及介绍
swiftui-navigation-stack/
├── README.md
├── Package.swift
├── Sources/
│ └── SwiftUINavigationStack/
│ ├── AppDelegate.swift
│ ├── SceneDelegate.swift
│ ├── ContentView.swift
│ └── Models/
│ └── User.swift
├── Tests/
│ └── LinuxMain.swift
└── .gitignore
- README.md: 项目说明文件,包含项目的基本信息和使用指南。
- Package.swift: Swift 包管理文件,定义了项目的依赖和目标。
- Sources/: 源代码目录,包含项目的所有源文件。
- SwiftUINavigationStack/: 主模块目录。
- AppDelegate.swift: 应用程序代理文件,处理应用程序生命周期事件。
- SceneDelegate.swift: 场景代理文件,处理多窗口场景。
- ContentView.swift: 主视图文件,应用程序的入口点。
- Models/: 数据模型目录,包含用户数据模型。
- Tests/: 测试目录,包含项目的测试文件。
- .gitignore: Git 忽略文件,定义了不需要版本控制的文件和目录。
2. 项目的启动文件介绍
AppDelegate.swift
import UIKit
import SwiftUI
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let contentView = ContentView()
if #available(iOS 14.0, *) {
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = UIHostingController(rootView: contentView)
window?.makeKeyAndVisible()
}
return true
}
}
- AppDelegate: 应用程序代理类,处理应用程序启动和生命周期事件。
- application(_:didFinishLaunchingWithOptions:): 应用程序启动后调用的方法,初始化主视图并设置为窗口的根视图控制器。
SceneDelegate.swift
import UIKit
import SwiftUI
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: ContentView())
self.window = window
window.makeKeyAndVisible()
}
}
}
- SceneDelegate: 场景代理类,处理多窗口场景。
- scene(_:willConnectTo:options:): 场景连接时调用的方法,初始化主视图并设置为窗口的根视图控制器。
3. 项目的配置文件介绍
Package.swift
// swift-tools-version:5.3
import PackageDescription
let package = Package(
name: "SwiftUINavigationStack",
platforms: [
.iOS(.v14)
],
products: [
.library(
name: "SwiftUINavigationStack",
targets: ["SwiftUINavigationStack"]
)
],
dependencies: [],
targets: [
.target(
name: "SwiftUINavigationStack",
dependencies: []
),
.testTarget(
name: "SwiftUINavigationStackTests",
dependencies: ["SwiftUINavigationStack"]
)
]
)
- Package.swift: Swift 包管理文件,定义了项目的名称、平台、产品、依赖和目标。
- name: 项目名称。
- platforms: 支持的平台和版本。
- products: 项目生成的产品,这里是一个库。
- dependencies: 项目的依赖。
- targets: 项目的目标,包括主模块和测试模块。
swiftui-navigation-stackAn alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation.项目地址:https://gitcode.com/gh_mirrors/sw/swiftui-navigation-stack