NavigationView Logo

导航变得简单

立即改善您项目中的导航。保持代码简洁

尝试我们准备的演示 | 路线图 | 提出新功能


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 Examples NavigationView Examples NavigationView Examples


Mijick 的 NavigationView 是一个强大的开源库,专为 SwiftUI 设计,使导航过程变得非常简单和清晰。


开始使用

✋ 要求

平台 最低 Swift 版本
iOS 15+ 5.0

⏳ 安装

Swift Package Manager

Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 Swift 编译器中。

一旦您设置了 Swift 包,将 NavigationView 添加为依赖项就像将其添加到您的 Package.swiftdependencies 值一样简单。

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

Cocoapods

Cocoapods 是 Swift 和 Objective-C Cocoa 项目的依赖项管理器,可帮助优雅地扩展它们。

安装步骤

pod init
pod 'MijickNavigationView'
pod install

用法

1. 设置库

在您的 @main 结构内部,使用作为导航堆栈根视图的视图调用 implementNavigationView 方法。该视图必须是 NavigatableView 类型。该方法采用一个可选参数 - config,可用于配置将放置在导航堆栈中的所有视图的某些属性。

@main struct NavigationView_Main: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
               .implementNavigationView(config: nil)                    
        }
    }
}

2. 声明要推送到导航堆栈的视图

Mijick 的 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 方法

此步骤是可选的 - 如果您愿意,您可以跳过此步骤并保持配置为默认值。
每个视图都有自己的一组方法,可用于为堆栈中的每个视图创建独特的外观。

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. 关闭您的视图 - 它甚至更简单!

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

struct ExampleView: NavigatableView {
    ...
    func createButton() -> some View {
        Button(action: popToRoot) { Text("Tap to return to root") } 
    }
    ...
}

7. 等等,还有更多!

我们快完成了,但我们想描述您可能喜欢的另外三种方法

ExampleView()
    .push(with: .verticalSlide)
    .setAsNewRoot()
ExampleView()
    .environmentObject(object)
    .push(with: .verticalSlide)
struct ExampleView: NavigatableView {    
    var body: some View {
        VStack(spacing: 0) {
            Text("Witaj okrutny świecie")
            Spacer()
            Button(action: pop) { Text("Pop") } 
        }
        .onFocus(self) {
            // Do something
        }
    }
    ...
}

尝试我们的演示

通过克隆我们创建的项目,亲身体验一下它是如何工作的

许可证

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



我们其他的开源 SwiftUI 库

PopupView - 最强大的弹出库,允许您显示任何弹出窗口
CalendarView - 立即创建您自己的日历对象
GridView - 毫不费力地布局您的数据
CameraView - 最强大的 CameraController。 专为 SwiftUI 设计
Timer - Timer 的现代 API