瞬间在您项目中实现导航。保持您的代码整洁
NavigationView 是一个免费、开源的 SwiftUI 库,使导航更加简单且更整洁。
- 提升代码质量。 使用
push(with:)
方法推送视图。
使用pop()
弹出选定的视图。简单至极。 - 专为 SwiftUI 设计。 在开发这个库的过程中,我们使用了 SwiftUI 的力量,为您提供强大的工具以加速您的实现过程。
平台 | 最低 Swift 版本 |
---|---|
iOS 15+ | 5.0 |
Swift 包管理器是一个用于自动分发 Swift 代码的工具,并集成到 Swift 编译器中。
一旦您设置了 Swift package,将其作为依赖项添加到 Package.swift
的 dependencies
值中的过程就像将其添加到 dependencies
一样简单。
dependencies: [
.package(url: "https://github.com/Mijick/NavigationView", branch(“main”))
]
在 @main
结构内部,在要成为导航结构根视图的视图上调用 implementNavigationView(config:)
方法。要作为根视图的视图必须是 NavigatableView
类型。此方法接受一个可选参数 config
,可以用于配置应用程序中所有导航视图的一些修饰符。
var body: some Scene {
WindowGroup {
ContentView()
.implementNavigationView(config: nil)
}
}
NavigationView 提供了使用其内置堆栈来推送(或弹出)任何视图的能力。为了做到这一点,需要确认 NavigatableView
协议。因此,您想要推送的示例视图将具有以下声明
struct ExampleView: NavigatableView {
...
}
将内容填充到您的视图中
struct ExampleView: NavigatableView {
var body: some View {
VStack(spacing: 0) {
Text("Witaj okrutny świecie")
Spacer()
Button(action: pop) { Text("Pop") }
}
}
...
}
此步骤是可选的 - 如果您希望,可以跳过此步骤并保留默认配置。
每个视图都有其自己的一组方法,可以用于自定义它,而不管我们提到的 第 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") }
}
}
...
}
只需从选择的位置调用 ExampleView().push(with:)
即可
struct SettingsViewModel {
...
func openSettings() {
...
ExampleView().push(with: .verticalSlide)
...
}
...
}
有两种方法可以实现:
- 通过在任何视图中调用以下方法之一:`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。
PopupView - 最强大的弹出库,允许您呈现任何弹出视图
CalendarView - 快速创建自己的日历对象
GridView - 无需努力即可排列您的数据
CameraView - 最强大的 CameraController。专为 SwiftUI 设计
Timer - 适用于 Timer 的现代 API