SwiftUI Navigation Stack 项目教程

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/: 数据模型目录,包含用户数据模型。
        • User.swift: 用户数据模型文件。
  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范意妲Kiefer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值