MijickNavigationView 1.1.3

MijickNavigationView 1.1.3

Mijick维护。



  • 作者:
  • Tomasz Kurylik

NavigationView Logo

简单导航

瞬间在您项目中实现导航。保持您的代码整洁

尝试我们准备的演示


Library in beta version Designed for SwiftUI Platforms: iOS Current Version License: MIT

Made in Kraków Follow us on X Let's work together Stargazers

NavigationView Examples


NavigationView 是一个免费、开源的 SwiftUI 库,使导航更加简单且更整洁。

  • 提升代码质量。 使用 push(with:) 方法推送视图。
    使用 pop() 弹出选定的视图。简单至极。
  • 专为 SwiftUI 设计。 在开发这个库的过程中,我们使用了 SwiftUI 的力量,为您提供强大的工具以加速您的实现过程。

入门指南

✋ 要求

平台 最低 Swift 版本
iOS 15+ 5.0

⏳ 安装

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

一旦您设置了 Swift package,将其作为依赖项添加到 Package.swiftdependencies 值中的过程就像将其添加到 dependencies 一样简单。

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

使用方法

1. 设置库

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

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

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

NavigationView 提供了使用其内置堆栈来推送(或弹出)任何视图的能力。为了做到这一点,需要确认 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.pop()
    • NavigationManager.pop(to type:) 其中 type 是您想要返回到的视图类型
    • NavigationManager.popToRoot()

尝试我们的演示

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

许可证

NavigationView 根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE



我们的其他开源 SwiftUI 库

PopupView - 最强大的弹出库,允许您呈现任何弹出视图
CalendarView - 快速创建自己的日历对象
GridView - 无需努力即可排列您的数据
CameraView - 最强大的 CameraController。专为 SwiftUI 设计
Timer - 适用于 Timer 的现代 API