一个免费的 SwiftUI 库,使导航变得更容易、更清晰

导航标志

导航变得简单

立即在您的项目中实施导航。保持代码干净

尝试我们准备的演示

导航示例

Navigattie 是一个免费的 SwiftUI 开源库,它使导航变得更容易、更清晰。

  • 提高代码质量。使用该方法推动您的视图push(with:)用 弹出所选的一个pop()前所未有的简单。
  • 专为 SwiftUI 设计。在开发该库时,我们利用 SwiftUI 的强大功能为您提供强大的工具来加速您的实施过程。

入门

✋ 要求

平台 最低 Swift 版本
iOS 15+ 5.0

⏳ 安装

斯威夫特包管理器

Swift 包管理器是一个用于自动分发 Swift 代码的工具,并集成到 Swift 编译器中。

设置好 Swift 包后,将 Navigattie 添加为依赖项就像将其添加dependenciesPackage.swift.

dependencies: [
    .package(url: "https://github.com/Mijick/Navigattie", branch(“main”))
]

用法

1. 设置库

在结构内部@main,调用implementNavigationView(config:)将成为导航结构中根视图的视图上的方法。作为根的视图必须是类型NavigatableView该方法采用可选参数 – config,可用于为应用程序中的所有导航视图配置一些修饰符。

  var body: some Scene {
        WindowGroup {
            ContentView()
               .implementNavigationView(config: nil)                    
        }
  }

2. 声明要推送的视图的结构

Navigattie 提供了使用其内置堆栈推送(或弹出)任何视图的功能。为此,需要确认NavigatableView协议。因此,您想要推送的示例视图将具有以下声明:

struct ExampleView: NavigatableView {
    ...
}

3. 实现body方法

用内容填充您的视图

struct ExampleView: NavigatableView {    
    var body: some View {
        VStack(spacing: 0) {
            Text("Witaj okrutny świecie")
            Spacer()
            Button(action: pop) { Text("Pop") } 
        }
    }
    ...
}

4. 实现configure(view: NavigationConfig) -> NavigationConfig方法

此步骤是可选的 - 如果您愿意,可以跳过此步骤并将配置保留为默认值。 每个视图都有自己的一组方法,可用于自定义它,无论我们在步骤 1中提到的配置如何。

struct ExampleView: NavigatableView {   
    func configure(view: NavigationConfig) -> NavigationConfig { view.backgroundColour(.red) }
    var body: some View {
        VStack(spacing: 0) {
            Text("Witaj okrutny świecie")
            Spacer()
            Button(action: pop) { Text("Pop") } 
        }
    }
    ...
}

5. 从任何你想要的地方展示你的观点!

只需ExampleView().push(with:)从选定的地点拨打电话即可

struct SettingsViewModel {
    ...
    func openSettings() {
        ...
        ExampleView().push(with: .verticalSlide)
        ...
    }
    ...
}

6. 结案意见

有两种方法可以做到这一点:

  • 通过在任何视图内调用pop, pop(to type:),方法之一popToRoot

struct ExampleView: NavigatableView {
    ...
    func createButton() -> some View {
        Button(action: popToRoot) { Text("Tap to return to root") } 
    }
    ...
}
  • 通过调用 NavigationManager 的静态方法之一:
    • NavigationManager.pop()
    • NavigationManager.pop(to type:)其中 type 是您要返回的视图类型
    • NavigationManager.popToRoot()

尝试我们的演示

通过克隆我们创建的项目来亲自看看它是如何工作的

执照

Navigattie 是在 MIT 许可下发布的。有关详细信息,请参阅许可证。

我们的其他开源 SwiftUI 库

PopupView – 最强大的弹出库,允许您呈现任何弹出窗口

GitHub

查看 Github